Страница 1 из 1

Expect и условие по результату выполнения команды

Добавлено: 2012-03-13 16:57:32
densan
Здравствуйте.
Делаю скрипт по массовой перезагрузке АТС 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"
Необходимо вставить условие: если АТС успешно пошла на перезагрузку (выведет в консоль "Now system is rebooting") написать в лог информацию об успешной перезагрузке АТС.
Но насколько я понял в expect нет возможности обрабатывать if-then-else с параметрами взятыми из вывода. Подскажите как можно реализовать?

Re: Expect и условие по результату выполнения команды

Добавлено: 2012-03-14 8:38:40
Termitnik
А как вы собираетесь писать в лог?

Re: Expect и условие по результату выполнения команды

Добавлено: 2012-03-14 9:47:49
densan
например
if "Now system is rebooting"
then
log_file -a $LOG_FILE
send_log "\r\n $date\r\n ATS $remote_server reboot"
else
log_file -a $LOG_FILE
send_log "\r\n $date\r\n ATS $remote_server NOT reboot!!!!"
fi
только как реализовать условие в expect'е?

Re: Expect и условие по результату выполнения команды

Добавлено: 2012-03-17 12:19:19
densan
В общем решил по другому: вывожу лог работы expect в файл, а потом парсю этот файл на предмет вхождения нужных мне строк и на основании этого формирую лог об успешной или неудачной выполнении команд.