ssh проблема в цикле - PullRequest
       30

ssh проблема в цикле

2 голосов
/ 26 ноября 2009

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

while read dbname myip
do
ssh root@$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

Ответы [ 4 ]

3 голосов
/ 26 ноября 2009

перенаправить стандартный ввод в / dev / null

while  read -r dbname myip
do
 0</dev/null ssh ...... <whatever> .........
done < "iplist"
1 голос
/ 26 ноября 2009

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

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

  • Управляйте своими серверами, написав код, а не запуская команды. (через кулинарные книги)
  • Тесная интеграция с вашими приложениями, базами данных, каталогами LDAP и многим другим. (через библиотеки)
  • Простая настройка приложений, требующих знаний о всей вашей инфраструктуре («На каких системах запущено мое приложение?» «Какой текущий главный сервер базы данных?»)
0 голосов
/ 19 сентября 2013

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

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

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

0 голосов
/ 26 ноября 2009

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

dsh - это реализация оболочки для выполнения нескольких команд удаленной оболочки (rsh / remsh / ssh).

...