Ich habe den folgenden Code (aktualisiert pexpect enthalten):Wie erfassen ich Passwort Prompt
import sys
import subprocess
import pexpect
print "0"
ssh = subprocess.Popen("ssh -A -t [email protected] ssh -A -X [email protected]",
shell = True,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE).communicate()
print "1"
child = pexpect.spawn(ssh)
print "2"
child.expect ('password')
print "3"
child.sendline ('password2')
print "4"
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print result
Wenn ich es laufen, sehe ich die Null von der Passwort-Eingabeaufforderung auf dem Bildschirm gefolgt gedruckt. Die Zeile, die "One" druckt, wird nie ausgeführt und der folgende Pexpect-Code auch nicht. Ich kann das Passwort als Benutzer eingeben, aber dann hängt es. Wenn ich es mit Strg + C abbringe, erscheint das zweite Anmeldebanner mit der Aufforderung zum zweiten Passwort, bevor ich zur Eingabeaufforderung zurückkehre. Kann jemand bitte erklären, wie man die 1. Kennwortansage aufnimmt, damit das Programm das Kennwort anstelle des Benutzers senden kann? Kann mir bitte jemand erklären, warum ich die Ergebnisvariable erst bekomme, wenn ich das Programm beendet habe?
Ich schlage vor, ssh_keys statt geschriebenen Passwörter zu verwenden. Dein Leben wird einfacher und gleichzeitig sicherer. – mosh442