So senden Sie das Sudo-Passwort in einem Shell-Skript

680
ercey

Mein Shell-Skript (EXPECT nicht haben und ist nicht möglich) führt ein Shell-Skript aus, das sich als anderer Benutzer ausweist. Nehmen wir an, das folgende Skript hat einen Namen toto1.shund wird mit einem Benutzer aufgerufen MYUSERNAME1.

#!/bin/sh su - MYUSERNAME2 ./app/sh/toto2.sh 

Mein Skript wird angehalten und fordert eine Kennwortanforderung an ...

Wie kann ich das Passwort senden MYUSERNAME2?

1
Erwägen Sie die Einrichtung eines kennwortlosen Sudo für diesen speziellen Fall. simlev vor 6 Jahren 0
Ich kann nicht, Sicherheitsfrage. Ich bin wirklich beim Befehl su geblieben ercey vor 6 Jahren 0
Können Sie das Skript nicht als "root" ausführen oder planen? simlev vor 6 Jahren 0
Ich habe kein Recht, das Skript wird von einer externen Anwendung aufgerufen, die keine vollständigen Rechte haben muss ... ercey vor 6 Jahren 0
Einfach ausgedrückt, ich kann nur den Befehl su verwenden ercey vor 6 Jahren 0
In der Regel ist es besser zu vermeiden, das Kennwort in Skripts aufzuschreiben. simlev vor 6 Jahren 0
Ich weiß es, aber dies ist meine letzte Lösung ... wie kann ich es tun? ercey vor 6 Jahren 0
Warten Sie einen Moment ... Sie haben nicht "Sudo"? simlev vor 6 Jahren 0
Mein Administrator, um den Benutzer Sudoers hinzuzufügen ercey vor 6 Jahren 0
Ihre Antwort ist mir nicht klar: Haben Sie "Sudo"? simlev vor 6 Jahren 0
Ja, ich habe Sudo ercey vor 6 Jahren 0

1 Antwort auf die Frage

0
simlev

Wenn Sie zur sudoVerfügung, hat die Lösung bereits in einer gebuchten Anzahl der Plätze :

echo <password> | sudo -S -u <user> <command> 

Von man sudo:

-S, --stdin Schreiben Sie die Eingabeaufforderung in den Standardfehler und lesen Sie das Kennwort aus der Standardeingabe, anstatt das Endgerät zu verwenden. Dem Passwort muss ein Zeilenvorschubzeichen folgen.