Что самым простым путем является к SSH использование Python?

Так как Вы говорите '.exe', я предположу, что Вы ищете решение для Windows. Одна идея состоит в том, чтобы просто добавить сценарии к предварительно созданному исполняемому файлу интерпретатора. Это может или не может квалифицировать как 'легкое' в Вашей книге.

интерпретатор должен быть в состоянии считать себя, проанализировать его заголовок для определения, где регулярные .exe данные заканчиваются (т.е. где сценарий начинается), и затем вручите от остатка от файла в Lua.

Другие решения не требуют, чтобы интерпретатор, чтобы как упорно работать, но сделать потребовал более включенного соединения, тогда как с этим методом, exeifying сценарий может быть столь же простым как

copy interpreter.exe+script.lua script.exe
78
задан pat 2 February 2014 в 19:43
поделиться

5 ответов

Я не пробовал, но этот модуль pysftp может помочь, который, в свою очередь, использует paramiko. Я считаю, что все на стороне клиента.

Интересная команда, вероятно, .execute () , которая выполняет произвольную команду на удаленной машине. (В модуле также есть методы .get () и .put , которые больше ссылаются на его характер FTP.)

ОБНОВЛЕНИЕ:

Я переписал ответ после того, как сообщение в блоге, на которое я изначально ссылался, больше не доступно. Некоторые комментарии, относящиеся к старой версии этого ответа, теперь будут выглядеть странно.

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

Как hughdbrown, мне нравится Fabric. Обратите внимание, что, хотя он реализует собственный декларативный сценарий (для развертывания и т.п.), его также можно импортировать как модуль Python и использовать в ваших программах без необходимости писать сценарий Fabric.

Fabric имеет нового сопровождающего и является в процессе переписывания; это означает, что большинство руководств, которые вы (в настоящее время) найдете в Интернете, не будут работать с текущей версией. Кроме того, Google по-прежнему показывает старую страницу Fabric в качестве первого результата.

Актуальную документацию можно найти по адресу: http://docs.fabfile.org

6
ответ дан 24 November 2019 в 10:32
поделиться

Если вы хотите избежать каких-либо дополнительных модулей, вы можете использовать модуль подпроцесса для запуска

ssh [host] [command]

и захвата вывода.

Попробуйте что-нибудь вроде:

process = subprocess.Popen("ssh example.com ls", shell=True,
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output,stderr = process.communicate()
status = process.poll()
print output

Для работы с именами пользователей и паролями вы можете использовать подпроцесс для взаимодействия с процессом ssh или установить открытый ключ на сервере, чтобы не запрашивать пароль.

24
ответ дан 24 November 2019 в 10:32
поделиться

Здесь важно ваше определение «простейшего» - простой код означает использование модуля (хотя «большая внешняя библиотека» - это преувеличение).

Я считаю, что наиболее современным (активно разрабатываемым) модулем является paramiko . Он поставляется с загружаемыми демонстрационными скриптами и имеет подробную интерактивную документацию по API. Вы также можете попробовать PxSSH , который содержится в pexpect . По первой ссылке есть небольшой образец вместе с документацией.

Опять же, что касается простоты, обратите внимание, что хорошее обнаружение ошибок всегда будет делать ваш код более сложным, но вы должны иметь возможность повторно использовать много кода из примеров сценариев, а затем забыть об этом.

8
ответ дан 24 November 2019 в 10:32
поделиться

Вы можете написать код самостоятельно, используя Paramiko, как было предложено выше. В качестве альтернативы вы можете заглянуть в Fabric, приложение на Python для выполнения всего, о чем вы спрашивали:

Fabric - это библиотека Python и инструмент командной строки, предназначенный для оптимизировать развертывание приложений или выполнение задач системного администрирования по протоколу SSH. Это обеспечивает инструменты для запуска произвольной оболочки команды (либо как обычный логин пользователем или через sudo), загрузка и загрузка файлов и т. д.

Думаю, это соответствует вашим потребностям. Это также небольшая библиотека и не требует установки сервера, хотя у нее есть зависимости от paramiko и pycrypt, которые требуют установки на клиенте.

Приложение раньше было здесь . Теперь его можно найти здесь .

* The official, canonical repository is git.fabfile.org
* The official Github mirror is GitHub/bitprophet/fabric

По нему есть несколько хороших статей, хотя вы должны быть осторожны, потому что он изменился за последние шесть месяцев:

Развертывание Django с помощью Fabric

Инструменты современного Python Hacker: Virtualenv, Fabric и Pip

Простое и легкое развертывание с помощью Fabric и Virtualenv


Позже: Fabric больше не требует установки paramiko:

$ pip install fabric
Downloading/unpacking fabric
  Downloading Fabric-1.4.2.tar.gz (182Kb): 182Kb downloaded
  Running setup.py egg_info for package fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
Downloading/unpacking ssh>=1.7.14 (from fabric)
  Downloading ssh-1.7.14.tar.gz (794Kb): 794Kb downloaded
  Running setup.py egg_info for package ssh
Downloading/unpacking pycrypto>=2.1,!=2.4 (from ssh>=1.7.14->fabric)
  Downloading pycrypto-2.6.tar.gz (443Kb): 443Kb downloaded
  Running setup.py egg_info for package pycrypto
Installing collected packages: fabric, ssh, pycrypto
  Running setup.py install for fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
    Installing fab script to /home/hbrown/.virtualenvs/fabric-test/bin
  Running setup.py install for ssh
  Running setup.py install for pycrypto
...
Successfully installed fabric ssh pycrypto
Cleaning up...

Это в основном косметическое, однако: ssh - это форк paramiko, сопровождающий обеих библиотек один и тот же (Джефф Форсьер, также автор Fabric), и сопровождающий планирует воссоединить paramiko и ssh под именем paramiko . (Это исправление через pbanka .)

60
ответ дан 24 November 2019 в 10:32
поделиться
Другие вопросы по тегам:

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