Make python-Kennwort eingeben, wenn Sie eine csh-Skript
Ich Schreibe ein python-Skript, dass ausgeführt wird ein csh-Skript in Solaris 10. Die csh-Skript fragt den Benutzer nach dem root-Passwort (das ich kenne), aber ich bin nicht sicher, wie man das python-Skript beantworten Sie die Aufforderung mit dem Passwort. Ist das möglich? Hier ist, was ich zum ausführen der csh-Skript:
import commands
commands.getoutput('server stop')
Ich hatte die Links aus ROHR, die neue version funktioniert...
Ersten mal zu sehen, wie die Befehle im Einsatz. BTW -- Sie können die getpass-Modul schnappen Sie sich ein Passwort von der Kommandozeile aus, ohne es anzuzeigen.
Obligatorische link
Obligatorisch Widerlegung der "csh-bashing" - link
Ersten mal zu sehen, wie die Befehle im Einsatz. BTW -- Sie können die getpass-Modul schnappen Sie sich ein Passwort von der Kommandozeile aus, ohne es anzuzeigen.
Obligatorische link
Obligatorisch Widerlegung der "csh-bashing" - link
InformationsquelleAutor darrickc | 2008-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf die pexpect Modul. Es ist entworfen, um Geschäft mit interaktiven Programmen, die scheint, in Ihrem Fall.
Oh, und denken Sie daran, dass die hart-Codierung root-Passwort in einem shell-oder python-script ist eine potenzielle Sicherheitslücke 😀
InformationsquelleAutor Federico A. Ramponi
Verwenden Teilprozess. Rufen Sie Popen() zu erstellen, verarbeiten und nutzen zu kommunizieren, () zu senden text. Sorry, vergessen zu schließen die ROHR..
Würden Sie besser tun, vermeiden Sie das Kennwort, und versuchen Sie ein Schema, wie sudo und sudoers. Pexpect, schon an anderer Stelle erwähnt, ist nicht Teil der standard-Bibliothek.
Ich bekomme die gleiche Antwort, wenn die PIPE, wie Sie hier empfehlen. Stoppt das Skript mit der Password: - Eingabeaufforderung.
Ich glaube nicht, dass dies funktioniert, da die csh-Skript exec su-root -c "$cmd0 $*", um zu versuchen, um mit su zu root werden. Die su würde ein anderer Prozess als der "server stop" - Skript.
InformationsquelleAutor Douglas Mayle
War der trick! Pexpect Regeln!
InformationsquelleAutor darrickc
Hinzufügen
input=
improc.communicate()
machen es für die Jungs, die die Verwendung von standard-lib.InformationsquelleAutor
Sollte in der Lage sein, um übergeben Sie es als parameter. so etwas wie:
InformationsquelleAutor Owen
Scheint dies besser zu funktionieren:
Aber es ist nicht 100% noch. Obwohl "Passwort" das korrekte Passwort ich bin noch immer su: Sorry, zurück aus der csh-Skript, wenn es versucht, su zu root werden.
NÖ, aus der API: Gibt die Datei-Objekte (child_stdout, child_stdin)
Nur einige FYI -- popen2 ist "Veraltet seit version 2.6: Dieses Modul ist veraltet. Verwenden Sie den subprocess-Modul. Überprüfen Sie insbesondere den Ersatz Älterer Funktionen mit dem subprocess-Modul."
Ja, mir ist gerade aufgefallen, dass. Ich schaltete mein code zurück zu dem subprocess-Modul. Danke!
Ich falsch bezeichnet os.popen2 statt popen2.popen2. Seltsam genug, um von stdin und stdout ist der Unterschied zwischen den beiden Bibliotheken...
InformationsquelleAutor darrickc
Um zu vermeiden, dass die Antwort auf die Passwort-Frage in das python-Skript, werde ich einfach das script ausführen als root. Diese Frage ist noch offen, aber ich denke, ich werde einfach tun, es auf diese Weise für jetzt.
InformationsquelleAutor darrickc