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