Jaki jest najbardziej pythonowy sposób scp pliku w Pythonie? Jedyna trasa, jaką znam, to
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
co jest hackem i które nie działa poza systemami podobnymi do Linuksa i które wymaga pomocy modułu Pexpect, aby uniknąć monitów o hasło, chyba że masz już skonfigurowane SSH bez hasła na zdalnym hoście.
Jestem świadomy istnienia Twisted conch, ale wolałbym uniknąć samodzielnego wdrażania scp za pomocą niskopoziomowych modułów ssh.
Jestem świadomy paramiko, moduł Pythona, który obsługuje SSH i SFTP; ale nie obsługuje SCP.
Tło: Łączę się z routerem, który nie obsługuje SFTP, ale obsługuje SSH / SCP, więc SFTP nie jest opcją.
EDYCJA : To jest duplikat Jak skopiować plik na zdalny serwer w Pythonie przy użyciu SCP lub SSH? . Jednak to pytanie nie daje odpowiedzi specyficznej dla SCP, która dotyczy kluczy z Pythona. Mam nadzieję na sposób na uruchomienie kodu
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')
scpkończy się wywołaniemscpwiersza poleceń, który działa tylko na * nix.