Выполнять команды через ssh с Python

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

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

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

113
задан fredley 27 August 2010 в 16:09
поделиться

4 ответа

Я отошлю вас к paramiko

см. этот вопрос

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)
174
ответ дан 24 November 2019 в 02:40
поделиться

Я использовал paramiko кучу (хорошо) и pxssh (тоже хорошо). Я бы порекомендовал либо. Они работают немного по-разному, но имеют относительно большое совпадение в использовании.

4
ответ дан 24 November 2019 в 02:40
поделиться

Или вы можете просто использовать commands.getstatusoutput:

   commands.getstatusoutput("ssh machine 1 'your script'")

Я активно использовал его, и он отлично работает.

В Python 2.6+ используйте subprocess.check_output.

45
ответ дан 24 November 2019 в 02:40
поделиться

Вы видели Ткань? Это позволяет вам делать все виды удаленных вещей через SSH, используя python.

27
ответ дан 24 November 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: