Как scp в питоне? - PullRequest
       160

Как scp в питоне?

141 голосов
/ 30 октября 2008

Какой самый питонный способ 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')

Ответы [ 13 ]

1 голос
/ 30 октября 2008

Хммм, возможно, другой вариант будет использовать что-то вроде sshfs (есть sshfs для Mac тоже) После того, как ваш роутер смонтирован, вы можете просто скопировать файлы. Я не уверен, что это работает для вашего конкретного приложения, но это хорошее решение, чтобы держать под рукой.

0 голосов
/ 05 июня 2014

Если вы используете * nix, вы можете использовать sshpass

sshpass -p password scp -o User=username -o StrictHostKeyChecking=no src dst:/path
0 голосов
/ 30 октября 2008

Я не думаю, что есть какой-то один модуль, который вы можете легко загрузить для реализации scp, однако вы можете найти это полезным: http://www.ibm.com/developerworks/linux/library/l-twist4.html

...