Я хочу выполнить несколько команд на некоторых серверах.

Итак, я создал файл bash:

#!/bin/sh
for n in `cat ~/nodes`; do
        gnome-terminal -x ssh root@$n
        ANYCOMMAND
done

Соединения установлены в новых терминалах.

Как я могу применить ANYCOMMAND на каждом сервере?

2 ответа2

0

Предложение:

#!/bin/bash
while read -r n; do
  </dev/null ssh root@$n "ANYCOMMAND"
done < ~/nodes
0

Существует несколько инструментов для одновременного выполнения команд на многих хостах. Некоторые из них открывают окна терминала в X (например, ClusterSSH), большинство для запуска команд в CLI:

http://web.taranis.org/shmux/

http://sourceforge.net/projects/mussh/

http://pydsh.sourceforge.net/

https://github.com/Ticketmaster/onall

http://sourceforge.net/projects/clusterssh/

https://code.google.com/p/omnissh/wiki/OmniSSH

https://code.google.com/p/pdsh/

http://www.theether.org/pssh/

http://www.gnu.org/software/parallel/

http://www.netfort.gr.jp/~dancer/software/dsh.html.en

https://github.com/ndenev/mpssh

http://sourceforge.net/projects/pussh/

Практически для всех инструментов у вас есть возможность отправлять команды и дополнительно иметь интерактивные оболочки. В противном случае отправка команд на серверы запускает команды вместо использования интерактивных оболочек входа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .