Я собираюсь написать первый код для обработки ssh команды на Python, и я действительно искал по stackoverflow и видел, что существует несколько библиотек Python, которыми можно пользоваться для обработки команд, прошел через ssh, как paramiko, pexpect и возможно некоторые другие.
Особенно, я должен буду считать содержание файлов от удаленного сервера, файлов копии через ssh/scp, быть произведенным от удаленного сервера после запуска сценария на удаленном сервере.
Возможно, некоторые эксперты могли совет, какая библиотека лучше, и укажите преимущества или недостатки?
Библиотеки, оболочки:
#! / Usr / bin / env python
импорт парамико
из contextlib import contextmanager
хост = '192.168.10.142'
username = 'бездельник'
пароль = 'пароль'
def create_ssh (host = host, username = username, password = password):
ssh = paramiko.SSHClient ()
ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy ())
пытаться:
печать "создание связи"
ssh.connect (хост, имя пользователя = имя пользователя, пароль = пароль)
печать "подключено"
yield ssh
Ну наконец то:
печать "закрытие соединения"
ssh.close ()
печать "закрыто"
1) использует 2) и обеспечивает некоторые функции более высокого уровня. Если последнее соответствует вашим требованиям, я предлагаю попробовать 1)
Обновление: 1) больше нет (2017-09-12)
http://media.commandline.org.uk/code/ssh .txt (пример использования: https://zeth.net/archive/2008/05/29/sftp-python-really-simple-ssh/ )
s = ssh.Connection ('example.com', 'воин', пароль = 'lennalenna')
s.put ('/ домой / воин / hello.txt', '/home/zombie/textfiles/report.txt')
s.get ('/ вар / журнал / странный.log', '/home/warrior/serverlog.txt')
s.execute ('ls -l')
s.close ()
Примечание : приведенные выше примеры кода предназначены только для получения впечатления; код не проверен.
Поскольку вы не делаете ничего особенного на уровне протокола, вам, по-видимому, не нужно, чтобы протокол был полностью реализован на Python, и вы могли просто запускать команды ssh / scp, используя модуль подпроцесса
.
import subprocess
subprocess.check_call(['ssh', 'server', 'command'])
subprocess.check_call(['scp', 'server:file', 'file'])
Попробуйте взглянуть на витую раковину . Он обрабатывает все, что вы хотите. Если вы просто искали передачу файлов в стиле SCP, вы всегда могли использовать модуль python secsh-filexfer .