Вопрос

У меня есть скрипт, который подключается к серверу, используя 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
Это было полезно?

Решение

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

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

Другие советы

На несколько более высоком уровне абстракции вас может заинтересовать, например. Шеф-повар:

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

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

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

  

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

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

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

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

scroll top