Как я могу широковещательно передать к нескольким ssh, использующим дескриптор файла?

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

Вопрос, Как я могу автоматизировать рабочие команды удаленно по SSH? решает эту проблему очень хорошо, если Вы подвержены использованию инструментов, предложенных как: pssh, sdh, gsh, кластер-ssh.
Но я пытаюсь узнать если там больше низкоуровневого решения, только при помощи стандартного SSH.

Моим вопросом является банка, Вы думаете о пути в Bash для открытия нескольких SSHs, перенаправления в них файл, поэтому каждый раз я пишу в файл, новый текст перенаправляется в SSH и выполняется.
Если существует обоснование позади, почему вышеупомянутое не может быть сделано, я был бы рад изучить, почему это не возможно.

1
задан 23.05.2017, 15:41

1 ответ

Один путь состоит в том, чтобы использовать, совместно обрабатывает.

$ coproc foo { ssh -T foo.domain; }

Теперь $foo массив двух дескрипторов файлов; ${foo[0]} stdout ssh и пишущий в fd ${foo[1]} отправит к stdin ssh.

$ echo "whoami" >&${foo[1]}
$ head -n 1 <&${foo[0]}
grawity
$

(Доступ /proc/$$/fd/${foo[1]} работал бы также.)


Иначе - именованные каналы.

$ mkfifo {foo,bar}.{in,out}
$ ssh foo <foo.in >foo.out &
$ ssh bar <bar.in >bar.out &
$ echo "whoami" | tee foo.in bar.in

Подобный - обрабатывают замену.

$ echo "whoami" | tee >(ssh foo) >(ssh bar)

Больше чем для одной команды:

$ mkfifo in
$ tee >(ssh foo) >(ssh bar) <in &
$ echo "whoami" >in

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

(Этот пример вставит файл /dev/shm постараться не поражать диск каждый раз.)

$ f=/dev/shm/in; touch $f
$ tail -f $f | ssh foo &
$ tail -f $f | ssh bar &
$ echo foo > $f 
$ echo bar >> $f; # note: >> for appending

И:

$ f=/dev/shm/in; touch $f
$ tail -f $f | tee >(ssh foo) >(ssh bar) &
$ echo foo >> $f
2
ответ дан 12.12.2019, 12:57

Теги

Похожие вопросы