У меня есть несколько терабайт данных, которые обрабатываются инструментом. Выходные данные инструмента должны быть отправлены на две другие машины одновременно (одновременно, потому что во время работы инструмента происходит простой, и я хочу ограничить время простоя).
Если я просто трубу с одной машины, то это просто:
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'