Безопасное копирование файла с удаленного сервера через модуль scp и os в Python

Я новичок в Python и программировании. Я пытаюсь скопировать файл между двумя компьютерами через скрипт python. Однако код

os.system("ssh " + hostname + " scp " + filepath + " " + user + "@" + localhost + ":" cwd)

не будет работать. Я думаю, что ему нужен пароль, как описано в Как скопировать файл на удаленный сервер в Python с помощью SCP или SSH? . Я не получал никаких журналов ошибок, файл просто не отображается в моем текущем рабочем каталоге.

Однако все остальные команды с os.system («ssh» + имя хоста + «команда») или os.popen («ssh» + имя хоста + «команда») работает. -> команда = например ls

Когда я пробую ssh hostname scp file user @ local: directory в командной строке, он работает без ввода пароля.

Я попытался объединить команды os.popen с модулем getpass и pxssh, чтобы установить ssh-соединение с удаленным сервером и использовать его для прямой отправки команд (я тестировал только простую команду):

import pxssh
import getpass

ssh = pxssh.pxssh()
ssh.force_password = True
hostname = raw_input("Hostname: ")
user = raw_input("Username: ")
password = getpass.getpass("Password: ")
ssh.login(hostname, user, password)
test = os.popen("hostname")
print test

Но я не могу передавать команды удаленному серверу ( print test показывает, что hostname = local, а не удаленный сервер), однако я уверен, что соединение установлено. Я подумал, что будет проще установить соединение, чем всегда использовать «ssh» + имя хоста в командах bash. Я также пробовал некоторые обходные пути в Как скопировать файл на удаленный сервер в Python с помощью SCP или SSH? , но я должен признать, что из-за недостатка опыта мне не удалось заставить их работать.

Большое спасибо за помощь.

5
задан Community 23 May 2017 в 12:24
поделиться