2009-11-26 1 views
2

У меня есть сценарий, который подключается к серверу с использованием ssh. Хотя в цикле он не может подключиться ко второму серверу после подключения к первому. Думаю, я должен уйти с этого сервера, чтобы вернуться к вызывающему скрипту. Как выйти из сеанса ssh?Проблема ssh в цикле

while read dbname myip 
do 
ssh [email protected]$myip "mysqldump - some command " | mysql -hhost -u -p myLocalDatabase > /dev/null 2>&1 
done << iplist 
db1 111.111.111.111 
xyz 222.222.222.222 
iplist 

ответ

3

Перенаправление STDIN в/DEV/нуль

while read -r dbname myip 
do 
0</dev/null ssh ...... <whatever> ......... 
done < "iplist" 
+0

Это именно то, что я хотел. Благодарю. – shantanuo

0

Если вы хотите выпустить ту же команду на несколько хостов SSH, вы можете использовать DSH:

DSH является реализация оберткой для выполнения нескольких удаленной оболочки (РШ/remsh/SSH) команды.

1

При немного более высоком уровне абстракции, вам может быть интересно, например. Chef:

Шеф-повар - это система системной интеграции, созданная для обеспечения преимуществ управления конфигурацией для всей инфраструктуры. С шеф-поваром вы можете:

  • Управление серверами путем написания кода, а не путем выполнения команд. (через Cookbooks)
  • Интеграция с приложениями, базами данных, каталогами LDAP и т. д. (С помощью библиотек)
  • Простая настройка приложений, требующих знания о всей инфраструктуре («Какие системы работают мое приложение?» «Что такое текущий сервер мастер базы данных?»)
0

Если у вас нет пробелов в строках файла "DBNAME", вы можете использовать это:

for myip in $(cat dbname); do 
    ... 
done 

(или использовать ткань: http://docs.fabfile.org/en/latest/)