Назад | Перейти на главную страницу

ожидать сценарий + как выполнить регистр в ожидаемом сценарии

следующая цель сценария ожидания - это распечатать имя хоста с машины 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 для имени хоста - 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" }

.
.
.
.
.
.

Я думаю, ты можешь сделать что-то вроде

expect "machine1" {send "/var/tmp/linux.ksh\r" } \
"machine2"  { send /var/tmp/solaris.ksh\r" } \
.
.
.

Сказав, что может быть проще использовать безымянный который вернется 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 перед командой, чтобы гарантировать, что он правильно найден в любой системе.