Próbuję nauczyć się skryptowania bash. Pracuję nad praktycznym problemem i w pewnym momencie muszę dodać wiersz do pliku, który wymaga root
pozwolenia na zapis.
Kod wygląda następująco:
# some code
echo "add this line to the code" >> fileName
# some code
Czy jest możliwe, aby w jakiś sposób skrypt poprosił o hasło roota, zweryfikował hasło i po udanym uwierzytelnieniu zmodyfikował plik? Skrypt powinien następnie powrócić do trybu użytkownika i kontynuować wykonywanie polecenia.
sudo
haseł nie wydaje się, aby były buforowanesu
.Możesz użyć
tee
zsudo
:echo
wyjście jest przekierowywane za pomocą|
( potoku ) dosudo tee
. w tym przypadkutee
odczytuje ze standardowego wejścia i zapisuje na standardowe wyjście dowolny plikfilename
.-a
(lub--append
)tee
dodaje do plików, bez których pliki zostałyby nadpisane. Potee
uruchomieniusudo
otwiera pliki z uprawnieniami administratora. Wreszcie,> /dev/null
tłumitee
wyjście na standardowe wyjście .Jedną z zalet używania
tee
zamiast uruchamiania całego polecenia, w tym przekierowania zsu -c
lub,sudo sh -c
jest to, że nie trzeba w żaden sposób zmieniać cytowania początkowego polecenia (cytowanie wierszy już zawierających cudzysłowy może czasami być dość brzydkie).źródło
Wypróbuj To polecenie jest dostępne w systemach Unix i Linux.
sudo sh -c "echo 'add this line to the code' >> fileName"
źródło
Zrobiłby lewę:
źródło
ssh
? Nie trzebasu
sięsudo
ani zrobić trzeba określićroot
, jak to jest domyślnie. Podsumowując, byłoby trochę więcej wyjaśnień, ponieważ OP chciał się czegoś nauczyć, a nie tylko rozwiązać problem.