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