Я новичок в 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? , но я должен признать, что из-за недостатка опыта мне не удалось заставить их работать.
Большое спасибо за помощь.