Передача вывода из скрипта Python на удаленную машину? - PullRequest
1 голос
/ 11 марта 2011

У меня есть скрипт Python, который выводит / печатает большой массив (размером 50 МБ) на экран.Этот скрипт работает на machineA.Можно ли вообще «передать» этот вывод в machineB, где он будет обработан?

Я знаю, что могу сохранить вывод в файл на machineA, а затем отправить файл на machineB.Мне было просто интересно, возможно ли это сделать без необходимости сначала сохранять данные в файл (на machineA).

Будут оценены любые решения (python, bash shell, другие идеи).

Ответы [ 5 ]

5 голосов
/ 11 марта 2011

Это работа для nc (netcat) ... на machineB, которую вы делаете

nc -l 12345 | processing_program

Эта команда запустит netcat в «режиме прослушивания», ожидая подключения.Как только соединение установлено, то, что приходит из сети, будет отправлено на стандартный вывод, а то, что отправлено на стандартный ввод, будет отправлено обратно тому, кто подключится.

После этого вы переходите на machineA и запускаете

generating_program | nc machineB 12345

это даст команду netcat установить соединение с machineB (порт 12345) и отправлять все, что получает от stdin, по проводам.Все, что возвращается из этого соединения, отправляется на стандартный вывод.

1 голос
/ 11 марта 2011

На машине A:

python script-on-machineA.py --options | ssh machineB tee /file/on/machine/B.txt

В качестве альтернативы на машине B:

ssh machineA python /path/to/script-on-machineA.py --options | cat > /file/on/machine/B.txt
1 голос
/ 11 марта 2011

Вы можете сделать это на разных уровнях - вот несколько вариантов

  1. используйте ssh для передачи myprog |ssh remotemachine myotherprog
  2. использовать nfs (при переходе к файлу
  3. использовать netcat (nc)
  4. использовать что-то вроде thrift

Это зависит отнасколько твердым и постоянным должно быть решение

1 голос
/ 11 марта 2011

Может быть, что-то вроде

myPythonScript | ssh user@machine "sh -c 'cat >myfile.txt'"

ВНИМАНИЕ: полностью вытащено из головы и не проверено!

1 голос
/ 11 марта 2011

С помощью инструмента Netcat вы можете легко передавать данные с одного компьютера на другой.

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