Я пишу сценарий active.ksh (на основе ожидаемого), чтобы автоматически войти в систему на какой-либо машине Solaris и выполнить команду hostname (войти на виртуальный IP-адрес, чтобы проверить, какое имя хоста является активной машиной - у меня есть два кластера Solarisмашины)
Проблема с , ожидаем ;Ожидается, что отправляет строку пароля (pass123), и он пропускает вопрос о пароле, и он все еще ждет пароль.
Таким образом, фактически пароль (pass123) был введен после вопроса о пароле.В большинстве случаев ожидаемый сценарий работает нормально, но иногда он пропускает пароль.
ПРИМЕР ПРОБЛЕМЫ
./active.ksh
spawn ssh 10.10.18.61
sh: /usr/local/bin/stty: not found
This computer system, including all related equipment, networks and network devices (specifically including Internet access),is provided only for authorized uss
Password: * my remark - pass123 string was missed the Password Question pass123
Password:
СКРИПТ
more active.ksh
#!/bin/ksh
VIP_ADDRESS=10.10.18.61
expect_for_verify_which_active_machine=`cat << EOF
set timeout -1
spawn ssh $VIP_ADDRESS
expect {
")?" { send "yes\r" ; exp_continue }
Password: {send "pass123\r"}
}
expect > {send "hostname\r"}
expect > {send exit\r}
expect eof
EOF`
expect -c "$expect_for_verify_which_active_machine"
ПРИМЕР ПРАВИЛЬНЫХ РЕЗУЛЬТАТОВ
./active.ksh
[Friday, February 24, 2012 2:32:06 PM IST] INFO Verify which is active SMU machine
spawn ssh 10.10.18.61
sh: /usr/local/bin/stty: not found
This computer system, including all related equipment, networks and network devices (specifically including Internet access),is provided only for authorized uss
yes
Password:
Last login: Fri Feb 24 14:32:06 2012 from smu1a
This computer system, including all related equipment, networks and network devices (specifically including Internet access),is provided only for authorized uss
solaris1:/ ROOT > hostname
solaris1
solaris1:/ ROOT > exit
logout
Connection to 10.10.18.61 closed.