Wie scp in Python?

Was ist der pythonischste Weg, eine Datei in Python zu scpen? Der einzige Weg, den ich kenne, ist

os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )

Dies ist ein Hack, der außerhalb von Linux-ähnlichen Systemen nicht funktioniert und Hilfe vom Pexpect-Modul benötigt, um Passwortabfragen zu vermeiden, es sei denn, Sie haben bereits passwortloses SSH für den Remote-Host eingerichtet.

Ich bin mir von Twisted's bewusstconch, aber ich würde es vorziehen, scp nicht über einfache ssh-Module zu implementieren.

Ich bin mir bewusst überparamikoein Python-Modul, das ssh und sftp unterstützt; aber es unterstützt scp nicht.

Hintergrund: Ich verbinde mich mit einem Router, der kein sftp unterstützt, aber ssh / scp unterstützt. Daher ist sftp keine Option.

BEARBEITEN: Dies ist ein Duplikat vonWie kopiere ich eine Datei mit SCP oder SSH auf einen Remote-Server in Python?. jedochgibt diese Frage keine scp-spezifische Antwort, die sich mit Schlüsseln aus Python befasst. Ich hoffe auf einen Weg, wie man Code laufen lässt

import scp

client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)

# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')

Antworten auf die Frage(13)

Ihre Antwort auf die Frage