Итак, у меня есть список серверов с длиной n. Мне нужно открыть соединение и отредактировать файл и закрыть его.Bash for loop для выполнения команд на удаленных серверах
Вот что я в настоящее время:
#!/bin/bash
server_list=(a b c d)
for i in "${server[@]}"; do ssh "${server[@]}"; cd /etc; cp file file.bak; perl -pi -i 's/find/replace/g' file; exit; done
Единственная проблема у меня есть, что я не могу выйти из соединения SSH и перейти к следующему в массиве. Я использовал опции -n
, -t
и -T
безрезультатно.
Спасибо.
было бы возможно для вас нет резервной копии на удаленном поле, выполнить ваши глобальные замены локально просто сделать 'УПП файл«$ {сервер [@] }/etc/"' – jiveturkey
Важно понять, что 'ssh '$ {server [@]}" 'является * отдельной командой * из' cd/etc', а поскольку ваш код в настоящее время написан, 'cd/etc' не будет выполняться до выхода 'ssh '$ {server [@]}" '. –