Рекурсивно выполнять локально определенный скрипт Python на удаленных машинах - PullRequest
4 голосов
/ 07 января 2012

Я заинтересован в написании сценария, чтобы единственная копия сценария находилась на моей локальной машине, но сценарий выполнялся на удаленных машинах, возможно, на удаленных машинах, выполняющих сценарий на других удаленных машинах (т. Е. 2 ​​илибольше уровней рекурсии в распределенном дереве вызовов).

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

subprocess.call(['ssh', <user@address>, 'python scriptname.py <params>'])

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

Ответы [ 4 ]

2 голосов
/ 07 января 2012

Нет, вы не сможете выполнить это за один шаг (за исключением python -c 'print "hello world"', может быть).Но ткань может сделать вашу жизнь немного проще.

1 голос
/ 07 января 2012

Двоичный файл Python имеет опцию -c, которая позволяет вам передавать действительный код Python в качестве аргумента. Например:

$ python -c "print 'hello'; print 'world'"

печать

hello
world

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

0 голосов
/ 07 января 2012

Выезд Ткань .Это инструмент Python для «написания и выполнения функций или задач Python для автоматизации взаимодействия с удаленными серверами». #

0 голосов
/ 07 января 2012

Я знаю, что sshuttle выполняет эту "загрузку" как часть своего обычного выполнения. Он предполагает наличие интерпретатора Python на удаленном конце соединения ssh и загружает код для запуска.

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

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