Назад | Перейти на главную страницу

linux: передача данных на несколько машин через ssh

У меня есть несколько терабайт данных, которые обрабатываются инструментом. Выходные данные инструмента должны быть отправлены на две другие машины одновременно (одновременно, потому что во время работы инструмента происходит простой, и я хочу ограничить время простоя).

Если я просто трубу с одной машины, то это просто:

tool terabyte.txt | ssh user@1.2.3.4 /sbin/process-input

но как я могу отправить данные на несколько машин одновременно?

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

Вы можете попробовать использовать тройник

tool terabyte.txt | tee >(ssh user@1.2.3.5 /sbin/process-input) | ssh user@1.2.3.4 /sbin/process-input

Вы можете попробовать ClutterSSH :

С помощью ClusterSSH можно установить SSH-соединение с несколькими серверами или машинами для выполнения задач из одного командного окна без каких-либо сценариев. Команда «cssh» позволяет подключаться к любому серверу, указанному в качестве аргумента командной строки, или к группам серверов (или узлов кластера), определенным в файле конфигурации.

Возможно, pee из moreutils может быть даже лучше:

моча похожа на тройник, но для трубок. Каждая команда запускается и получает копию стандартного ввода. Вывод всех команд отправляется на стандартный вывод.

Итак, вы можете бежать

tool terabyte.txt |pee 'ssh user@1.2.3.4 /sbin/process-input' 'ssh user@1.2.3.5 /sbin/process-input'