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')
scp
kończy się wywołaniemscp
wiersza poleceń, który działa tylko na * nix.