Ich versuche, Bash-Scripting zu lernen. Ich arbeite an einem praktischen Problem und muss irgendwann eine Zeile zu einer Datei hinzufügen, für die eine root
Schreibberechtigung erforderlich ist .
Der Code sieht folgendermaßen aus:
# some code
echo "add this line to the code" >> fileName
# some code
Ist es möglich, das Skript irgendwie nach dem Root-Passwort fragen zu lassen, das Passwort zu validieren und bei erfolgreicher Authentifizierung die Datei zu ändern? Das Skript sollte dann in den Benutzermodus zurückkehren und die Befehlsausführung fortsetzen.
sudo
scheinen Passwörter nicht zwischengespeichert zu werdensu
.Sie könnten verwenden
tee
mitsudo
:echo
Die Ausgabe wird mit|
( Pipe ) an umgeleitetsudo tee
.tee
Liest von der Standardeingabe und schreibt in diesem Fall eine bestimmte Datei in die Standardausgabefilename
.-a
(oder--append
) machttee
Anhängen an Dateien, ohne die die Dateien überschrieben würden. Wietee
ausgeführt mitsudo
es Dateien mit root-Berechtigungen öffnet. Schließlich> /dev/null
unterdrückttee
‚s Ausgabe an die Standardausgabe .Ein Vorteil der Verwendung,
tee
anstatt nur den gesamten Befehl einschließlich der Umleitung mitsu -c
oder zu starten,sudo sh -c
besteht darin, dass Sie das Anführungszeichen des ursprünglichen Befehls in keiner Weise ändern müssen (Anführungszeichen, die bereits Anführungszeichen enthalten, können manchmal ziemlich hässlich werden).quelle
Versuchen Sie dies Dieser Befehl ist unter Unix und Linux verfügbar.
sudo sh -c "echo 'add this line to the code' >> fileName"
quelle
Würde den Trick machen:
quelle
ssh
? Sie müssen nichtsu
mitsudo
und Sie müssen auch nicht angeben,root
da dies die Standardeinstellung ist. Alles in allem wären ein bisschen mehr Erklärungen nett, da das OP etwas lernen wollte und nicht nur ein Problem gelöst.