Wie interagieren Sie mit ssh mit subprocess-Modul
Ich versuche zu spawnen, eine ssh-Kind-Prozess mit Unterprozess.
Arbeite ich auf Python 2.7.6 auf Windows 7
hier ist mein code:
from subprocess import *
r=Popen("ssh sshserver@localhost", stdout=PIPE)
stdout, stderr=r.communicate()
print(stdout)
print(stderr)
Ausgänge:
None
stdout sollte enthalten:
sshserver@localhost ' s password:
Unter Linux zumindest (und prob windows) die
Wenn Sie ' re gehen zu müssen, zu automatisieren
Ich arbeitete bereits auf pexpect funktioniert aber nicht einwandfrei unter windows, das ist, warum ich wollen, verwenden standard-python Module @larsks
Sie nicht verwenden können standard-Module für dieses. Windows nicht lassen Sie Sie Haken bis zu den Teilprozess ID. Ich habe gelesen, über jemanden, den das hantieren mit den
Ich hatte bereits debian installiert und arbeitete mit pexpect, aber ich möchte zu finden eine Lösung für windows 😀
stdin
des tty ist nicht der gleiche wie der ssh fragt nach dem Passwort. Hold on, bekam code für diese (linux-tho).Wenn Sie ' re gehen zu müssen, zu automatisieren
ssh
Sie wahrscheinlich wollen, um etwas zu untersuchen, wie pexpect oder ähnlich. Möglicherweise möchten Sie auch zu prüfen, die nur mit Schlüssel-basierte Authentifizierung, so dass Sie nicht brauchen, um muck über mit Passwörtern.Ich arbeitete bereits auf pexpect funktioniert aber nicht einwandfrei unter windows, das ist, warum ich wollen, verwenden standard-python Module @larsks
Sie nicht verwenden können standard-Module für dieses. Windows nicht lassen Sie Sie Haken bis zu den Teilprozess ID. Ich habe gelesen, über jemanden, den das hantieren mit den
win32
Bibliothek tho, dem es gelang, change-Prozess-Berechtigungen für die Haupt-Schleife, um zu befestigen, um den Teilprozess ID und Lesen Sie die Ausgabe auf stdout. Aber kurz gesagt, es ist nicht möglich. Ich habe alle deine 3 Optionen unten, das bekannt, um zu arbeiten. Die erste ist eine Linux-Lösung, so sind Sie wahrscheinlich nicht interessiert, es sei denn, Sie wollen einen halt im Leben und mit einem richtigen OS, heh 🙂Ich hatte bereits debian installiert und arbeitete mit pexpect, aber ich möchte zu finden eine Lösung für windows 😀
InformationsquelleAutor WannaBeGenius | 2014-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel für funktionierende SSH-code, der verarbeitet die promt für ja/Nein auf der Bescheinigung Teil und auch wenn nach einem Passwort gefragt.
Den Grund (und korrigieren Sie mich wenn ich bin falsch hier) für Sie, Sie nicht Lesen zu können, die
stdin
sofort ist da SSH als Teilprozess ausgeführt wird, die unter einer anderen Prozess-ID, die Sie brauchen, um zu Lesen/Anhängen.Da Sie mit windows,
pty
wird nicht funktionieren. es gibt zwei Lösungen, die besser funktionieren würde und das ist pexpect und wie jemand darauf hingewiesen Schlüssel-basierte Authentifizierung.Um eine Schlüssel-basierte Authentifizierung müssen Sie nur Folgendes tun:
Auf Ihrem client führen:
ssh-keygen
Kopieren Sie Ihre
id_rsa.pub
Inhalt (eine Zeile) in/home/user/.ssh/authorized_keys
auf dem server.Ist und du bist fertig.
Wenn nicht, gehen Sie mit pexpect.
Was ich bereits in meiner Antwort habe ich nicht? :/
ja hast du, und ich habe erwähnt, dass ich unter windows arbeiten 😉
Und das ist, warum ich gepostet, zwei andere Lösungen, die die Arbeit unter Windows 😉 Hinweis: Linux-Update ist für jemand anderes dies Lesen (Grund wird es eine TONNE von anderen Menschen kommen hierher, weil es ein gemeinsames Problem), auch Sie haben einen linux-Rechner jetzt also dies würde Ihnen helfen, so gut 😛
Lösungen aus Ihrer Antwort nicht auf Windows.
pexpect
musspty
, die erwartet, dass ein POSIX-system (pty
ist für Linux geschrieben).InformationsquelleAutor Torxed