У меня есть python script, который выводит/печатает большой массив (размером 50 МБ) на экран. Этот script работает на machineA
. Возможно ли "вывести" этот вывод на machineB
, где он будет обработан?
Я знаю, что я могу сохранить вывод в файле на machineA
, а затем отправить файл в machineB
. Мне просто интересно, можно ли сделать это без необходимости сначала сохранять данные в файл (на machineA
).
Будут оценены любые решения (python, bash shell, другие идеи).
Это работа для nc
(netcat)... на machineB
вы делаете
nc -l 12345 | processing_program
Эта команда запустит netcat в "режиме прослушивания", ожидающем соединения. Как только соединение установлено, то, что поступает из сети, будет отправлено на stdout, а то, что отправлено на stdin, будет отправлено обратно тому, кто подключен.
После этого вы продолжаете machineA
и запустите
generating_program | nc machineB 12345
это приведет к тому, что netcat начнет соединение с machineB
(порт 12345) и отправит все, что получает от stdin по проводу. Все, что возвращается из этого соединения, отправляется на стандартный вывод.
На machineA:
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
С помощью инструмента Netcat вы можете легко передавать данные с одной машины на другую.
Вы можете сделать это на разных уровнях - вот несколько вариантов
Это зависит от того, насколько надежным и постоянным должно быть решение.
Возможно, что-то похожее на строки
myPythonScript | ssh user@machine "sh -c 'cat >myfile.txt'"
ПРЕДУПРЕЖДЕНИЕ: полностью вытащили из головы и непроверены!
machineB
одновременно прослушивать 20 машин? Кроме того, я должен активно «открыть порт прослушивания» наmachineB
?