Кажется странным, что вам нужно будет идентифицировать сервер на основе некоторой строки в баннере, который он возвращает, когда у вас уже есть его идентификатор в переменной $ host. Если указанное имя хоста не преобразуется в несколько серверов, которые не используют общий пароль.
При условии, что каждая из хостов выдает такую ситуацию и баннер, на котором написано "Welcome to servername ", вы можете сделать что-то вродеthis:
#!/usr/bin/expect
set host [lindex $argv 0]
spawn ssh $host
expect {
-ex {Welcome to server1} {
set pass "xxx"
}
-ex {Welcome to server2} {
set pass "yy"
}
default {
# Something unexpected happened
exit 1
}
}
expect {
-ex "Password: " {
send "$pass\r"
}
}
Сначала выполняется поиск приветственного сообщения и установка переменной прохода пароля для конкретного сервера. Затем он отправляет выбранный пароль на сервер после того, как находит запрос на ввод пароля.