Ожидаемый сценарий + как выполнить случай в ожидаемом сценарии
Следующая ожидаемая цель сценария - напечатать имя хоста с машины linux / solaris и в соответствии с результатами имени хоста ожидать, что скрипт запустит скрипт linux.ksh или solaris.ksh
expect_sun_script=`cat << EOF
set timeout -1
spawn telnet 0 $IP_ADDRESS
expect login: {send $LOGIN\r}
expect Password: {send "PASS\r"}
expect -re {#|>} {send "/bin/hostname\r"}
поэтому - после того как я получу имя хоста, мне нужно запустить linux.ksh для hostname - machine1
или если я получу имя хоста - machine2, тогда мне нужно запустить скрипт - solaris.ksh
но как ожидать, может запустить скрипт в соответствии с именем хоста?
согласно моему примеру ниже:
ожидайте, что на самом деле ждите machine1 - но это может быть machine2, так что застрял....
моя цель - запустить linux.ksh или solaris.ksh согласно соответствующему имени хоста
пожалуйста посоветуй?
expect "machine1" { send "/var/tmp/linux.ksh\r " }
expect "machine2" { send "/var/tmp/solaris.ksh\r" }
.
.
.
.
.
.
1 ответ
Я думаю, что вы можете сделать что-то вроде
expect "machine1" {send "/var/tmp/linux.ksh\r" } \
"machine2" { send /var/tmp/solaris.ksh\r" } \
.
.
.
Сказав, что может быть проще использовать uname, который вернет Linux
а также SunOS
соответственно и должно значительно облегчить управление сценарием, так как хосты приходят и уходят.
expect -re {#|>} {send "PATH=/bin:/usr/bin:$PATH uname\r"}
expect "Linux" { send /var/tmp/linux.ksh\r" } \
expect SunOS { send /var/tmp/solaris.ksh\r" }
Обратите внимание, что uname
команда находится в /bin
для Linux и /usr/bin
для Solaris мы устанавливаем PATH перед командой, чтобы убедиться, что он правильно найден в любой системе.