Как скопировать файл на удаленный сервер в Python, используя SCP или SSH? - PullRequest
90 голосов
/ 16 сентября 2008

У меня на локальном компьютере есть текстовый файл, который генерируется ежедневным скриптом Python, запускаемым в cron

Я хотел бы добавить немного кода для безопасной отправки этого файла на мой сервер через SSH.

Ответы [ 13 ]

0 голосов
/ 12 июля 2017
from paramiko import SSHClient
from scp import SCPClient
import os

ssh = SSHClient() 
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect(server, username='username', password='password')
with SCPClient(ssh.get_transport()) as scp:
        scp.put('test.txt', 'test2.txt')
0 голосов
/ 28 марта 2014

Вызов команды scp через подпроцесс не позволяет получить отчет о ходе выполнения внутри скрипта. pexpect может быть использовано для извлечения этой информации:

import pipes
import re
import pexpect # $ pip install pexpect

def progress(locals):
    # extract percents
    print(int(re.search(br'(\d+)%$', locals['child'].after).group(1)))

command = "scp %s %s" % tuple(map(pipes.quote, [srcfile, destination]))
pexpect.run(command, events={r'\d+%': progress})

См. файл копирования Python в локальной сети (linux -> linux)

0 голосов
/ 16 сентября 2008

Хак, но должно работать следующее:)

import os
filePath = "/foo/bar/baz.py"
serverPath = "/blah/boo/boom.py"
os.system("scp "+filePath+" user@myserver.com:"+serverPath)
...