Какой самый питонный способ scp файла в Python? Единственный маршрут, о котором я знаю, это
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
, который является хаком, и который не работает вне linux-подобных систем, и который нуждается в помощи модуля Pexpect, чтобы избежать запросов пароля, если у вас уже не установлен SSH без пароля для удаленного хоста.
Мне известно о conch
в Twisted, но я бы предпочел избегать реализации scp самостоятельно через низкоуровневые ssh-модули.
Мне известно о paramiko
, модуле Python, который поддерживает ssh и sftp; но он не поддерживает scp.
Справочная информация: я подключаюсь к маршрутизатору, который не поддерживает sftp, но поддерживает ssh / scp, поэтому sftp не подходит.
EDIT :
Это дубликат Как скопировать файл на удаленный сервер в Python, используя SCP или SSH? . Однако , этот вопрос не дает специфичного для scp ответа, который касается ключей изнутри python. Я надеюсь на способ запуска кода вроде
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')