2016-02-19 5 views
0

Мне нужно войти на различные серверы, используя ssh parallely, используя сценарий оболочки. Это аутентификация с паролем. Я должен зайти на 25 серверов и перезапустить процесс, который занимает много времени. Поэтому я хочу сделать этот процесс на всех серверах одновременно. Мой сценарий выглядит следующим образом:ssh на нескольких серверах одновременно

while read line 
do 
ssh $line 
------restart process------- 
done < list.txt & 

Здесь «list.txt» имеет список серверов. Я использовал «&» для вызова новой оболочки для каждой итерации и повторения процесса для всех серверов. Но сценарий все еще выполняет процесс перезапуска для серверов в списке один за другим. Он не выполняет процесс перезапуска в одно и то же время. сервер, на котором запущен скрипт, является bulit на bash, тогда как 25 серверов, на которых процесс должен быть перезапущен, - это bulit на оболочке korn. Может ли кто-нибудь сказать мне, что является ошибкой в ​​сценарии или параллельным входом с использованием ssh, возможно или нет? Заранее спасибо

+0

У вас есть другие варианты, а не использовать скрипт. Мои предложения помогут использовать скрипт, выполненный с использованием http://www.fabfile.org/, или использовать другой инструмент, например pssh https://code.google.com/archive/p/parallel-ssh/ – PerroVerd

+0

@PerroVerd .. .... Спасибо за ваш ответ ....... pssh работает для меня – Prashanth

+0

Использовали clusterssh для интерактивного случая. Его можно использовать для ввода команды во все хосты или только из одного из них. – Jokester

ответ

0

непроверенных, но это должно работать с использованием heredoc - см Wikipedia heredoc:

while read line 
do 
    ssh $line <<'EOF' & 
     command 
     command 
    EOF 
done < list.txt 
+0

Спасибо за скрипт ...... Это работает :) – Prashanth

0

Вы фоновые основной цикл, а не выполнение SSH попробовать с этим

while read line 
do 
    ssh $line ---restart process--- & 
done < list.txt 
+0

Спасибо за ваш ответ. Но процесс перезапуска имеет много команд и некоторые, если еще и тестовые условия. Можете ли вы сказать, где я должен положить символ «&» для фона всего процесса и перейти к следующей итерации внешнего цикла while? – Prashanth

+0

Простым способом является создание другого скрипта restart_process.sh со всеми необходимыми командами и фоном в цикле while – PerroVerd

Смежные вопросы