Подтвердить что ты не робот

Библиотеки python для обработки ssh

Я собираюсь написать первый код для обработки команд ssh на python, и я выполнил поиск по stackoverflow и вижу, что существует несколько библиотек python, которые могут использоваться для обработки команд, переданных через ssh, например paramiko, pexpect и, возможно, некоторые другие.

В частности, мне нужно будет прочитать содержимое файлов с удаленного сервера, скопировать файлы через ssh/scp, получить выход с удаленного сервера после запуска script на удаленном сервере.

Возможно, некоторые эксперты могут советовать, какая библиотека лучше и указать преимущества или недостатки?

4b9b3361

Ответ 1

Библиотеки, обертки:

  1. http://www.lag.net/paramiko/

    #!/usr/bin/env python
    import paramiko
    from contextlib import contextmanager
    host = '192.168.10.142'
    username = 'slacker'
    password = 'password'
    def create_ssh(host=host, username=username, password=password):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
        try:
           print "creating connection"
           ssh.connect(host, username=username, password=password)
           print "connected"
           yield ssh
        finally:
           print "closing connection"
           ssh.close()
           print "closed"
    

1) использует 2) и предоставляет некоторые функции более высокого уровня. Если последние соответствуют вашим требованиям, я предлагаю попробовать 1)


Обновление: 1) сейчас нет (2017-09-12)

Примечание. Приведенные выше примеры кода предназначены только для получения впечатления; код не проверен.

Ответ 2

Поскольку вы не делаете ничего особенного на уровне протокола, вам, по-видимому, не нужно, чтобы протокол полностью реализовывался в python, и вы могли просто запускать команды ssh/scp с помощью модуля subprocess.

import subprocess
subprocess.check_call(['ssh', 'server', 'command'])
subprocess.check_call(['scp', 'server:file', 'file'])

Ответ 3

Попробуйте взглянуть на Twisted Conch. Он обрабатывает все, что вы хотите. Если вы просто искали передачу файлов в стиле SCP, вы всегда можете использовать модуль python secsh-filexfer.

Ответ 4

Единственная особенность, которой не обладает ни одна из вышеперечисленных библиотек, - это одновременное подключение к нескольким серверам. В наше время, когда администраторы системы должны запускать команды на сотнях серверов, очень важны библиотеки, которые могут выполнять параллельное выполнение команд. Я знаю, что две библиотеки:

Триггер - это нечто большее, чем обертка SSH и большая часть сетевой библиотеки, она использует API скрученного ядра для включения параллельных операций ввода-вывода.

Parallel-SSH - это библиотека, которая является тонкой оболочкой над Paramiko, но использует Gevent под капотом, чтобы разрешить параллельные операции ввода/вывода