Ich versuche, ein Python-Skript zu schreiben, um eine Reihe von Remote-Befehlen auf einem Linux-Rechner von Windows auszuführen. Ich benutze Paramiko als die SSH-Verbindungsbibliothek und führe einige Fab-Skripte auf dem entfernten Rechner aus.Agentenweiterleitung mit paramiko unter Windows
Die Fab-Skripts verbinden sich dann jedoch mit anderen Maschinen, so dass ich Agentenweiterleitung verwenden muss. Jedes Mal, wenn ich den Code ausführen bekomme ich diesen Fehler:
Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner
self.run()
File "C:\Python27\lib\site-packages\paramiko\agent.py", line 117, in run
raise AuthenticationException("Unable to connect to SSH agent")
ich kopierte wörtlich mehrere Beispiele einschließlich: https://gist.github.com/toejough/436540622530c35404e6
Es sieht aus wie ich ein lokalen Authentifizierungsagenten einrichten müssen, da es nur weiterleitet zu nichts, aber ich kann nicht herausfinden, wie das geht.
Mein Code:
privkey = paramiko.RSAKey.from_private_key_file(PrivKeyDirFile, password = PrivKeyPw)
# Start the client
client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(paramiko.client.AutoAddPolicy())
client.load_system_host_keys()
client.connect(hostname = Host, username = User, pkey = privkey)
# get a session
sshChannel = client.get_transport().open_session()
# set up the agent request handler to handle agent requests from the server
paramiko.agent.AgentRequestHandler(sshChannel) # <--UNDOCUMENTED??!!
# get a shell
sshChannel.get_pty()
sshChannel.invoke_shell()
# SNIP
sshChannel.send
("command-which-invokes-fab-script\n")
# error now happens
Bitte um Hilfe!
Wir sind Ausführen einer interaktiven Sitzung, die das Senden und Abhören einer großen Anzahl von Befehlen erfordert. Von unserem Lesen und Experimentieren war der Befehl exec_command für einzelne Befehle nützlicher, während der Kanal für die interaktivere Methode nützlicher ist. – voiceofthemany
@voiceofthemany - Okay. Erhalten Sie denselben Fehler, wenn Sie 'exec_command' verwenden? Wenn nicht, möchten Sie vielleicht den Quellcode für 'exec_command' vergleichen mit dem, was Sie geschrieben haben. – ArtOfWarfare
Ja, derselbe Fehler für den Befehl "problem" bei Verwendung von exec_command. – voiceofthemany