Пытаюсь решить такую задачку на BASH.
1.Имеем файл base.txt вида:
admin1@10.10.10.1:pass1
admin2@10.10.10.2:pass2
admin3@10.10.10.3:pass3
2.Запускаем "SH-скрипт", который:
- считывает данные из файла base.txt в массив
т.е. получаем нечто такое:
$servers = array("admin1@10.10.10.1:pass1", "admin2@10.10.10.2:pass2", "admin3@10.10.10.3:pass3");
Далее:
- считаем количество ключей -1, для дальнейшего перебора в цикле по ключу
- запускаем цикл
- обращаемся к $key=0 => $servers[$key], вытаскиваем значение, которое затем "режем на переменные"
$user = "admin1";
$serv = "10.10.10.1";
$pass = "pass1";
Дальше примерно так:
#!/usr/bin/expect -f
set timeout 2
set USER "$user"
set HOST "$serv"
set PASS "$pass1"
spawn ssh $USER@$HOST
expect (тут непонятка!!!)
send "yes\r"
Суть непонятки: пытаемся подключиться с моей Linux машины по списку серверов к серверу №1
Запустили SSH с логином и IP и в ответ получаем запрос на согласие добавить "чего то там, куда то там" ...
Такие запросы будут всегда разными (собственно автоматизация для этого и нужна).
Но ответ всегда будет YES.
После ответа YES => последует ввод пароля send "$PASS\r" и затем еще 10 команд и так до конца цикла.
Нужно "получить вопрос" в виде подтверждения на добавление ключа и сравнить его с "шаблоном"
Но с этим как раз засада (вопросы всегда разные ...).
Далее забить ответ с помощью send "yes\r"
Как это можно решить c expect + bash?


