Выполнять команды через SSH с Python - PullRequest
106 голосов
/ 27 августа 2010

Я пишу скрипт для автоматизации некоторых команд командной строки в Python.На данный момент я делаю вызовы так:

cmd = "some unix command"
retcode = subprocess.call(cmd,shell=True)

Однако мне нужно выполнить некоторые команды на удаленном компьютере.Вручную, я бы войти в систему с помощью ssh, а затем запустить команды.Как бы я автоматизировал это в Python?Мне нужно войти с (известным) паролем на удаленный компьютер, поэтому я не могу просто использовать cmd = ssh user@remotehost, мне интересно, есть ли модуль, который я должен использовать?

Ответы [ 12 ]

0 голосов
/ 16 января 2019

paramiko наконец-то сработало для меня после добавления дополнительной строки, которая действительно важна (строка 3):

import paramiko

p = paramiko.SSHClient()
p.set_missing_host_key_policy(paramiko.AutoAddPolicy())   # This script doesn't work for me unless this line is added!
p.connect("server", port=22, username="username", password="password")
stdin, stdout, stderr = p.exec_command("your command")
opt = stdout.readlines()
opt = "".join(opt)
print(opt)

Убедитесь, что пакет paramiko установлен.Оригинальный источник решения: Источник

0 голосов
/ 16 мая 2018

Взгляните на spurplus, оболочку, которую мы разработали для spur, которая предоставляет аннотации типов и некоторые незначительные уловки (переподключение SFTP, md5 и т. Д. .): https://pypi.org/project/spurplus/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...