Делаю скрипт по массовой перезагрузке АТС LG LDK 60/100. Запускается sh скрипт, который проверяет доступность АТС по пингу и если пинг есть, запускает expect скрипт с ИП взятым из файла.
Код: Выделить всё
#!/usr/local/bin/expect -f
set remote_server [lindex $argv 0]
set LOG_FILE "/var/log/ats.log"
set date [timestamp -format "%C%y-%m-%d %X"]
if { $remote_server == "" } {
puts "Usage: <ipaddr> \n"
exit 1
}
#Отключаем вывод команд в stdout, если хотите видеть вывод в консоли отключите это
#log_user 0
# Открываем telnet сессию на АТС
spawn telnet $remote_server
# Ждем строку "Your port number"
expect "Your port number"
# Посылаем Enter и ждем запроса пароля.
send "\r"
expect "ENTER PASSWORD:"
# Посылаем пароль и ждем приглашения ввода командного интерпретатора.
send "jannie\r"
expect "maint>"
# Посылаем команду перезагрузки, и ждем следующего приглашения на ввод пароля,
# который должен предварительно забит в PGM 162, после этого необходима перезагрузка АТС PGM 450/452.
send "reboot\r"
expect "Password:"
send "4410\r"
expect "Retype password:"
send "4410\r"
expect "Now system is rebooting"
send "\r"
Но насколько я понял в expect нет возможности обрабатывать if-then-else с параметрами взятыми из вывода. Подскажите как можно реализовать?