Просмотр Исходного

Для управления оборудованием, требующим консольного интерактивного взаимодействия с человеком (ввода пароля, команд вручную) используется утилита expect. В этой статье приведен пример использования expect в скрипте event_inc.sh для управления оборудованием по telnet .


В файле event_inc.sh


{code}
...
"balance_positive")
if [ "$logged" = "1" -a "$nas_ip" != "0.0.0.0" ]; then
/usr/local/bin/expect /var/lib/event/expect_positive.sh $nas_ip $ip $ceil_in $ceil_out
...

{code}
В файле expect_positive.sh


{code}
#!/usr/local/bin/expect
set nas_ip [lrange $argv 0 0]
set ip [lrange $argv 1 1]
set ceil_in [lrange $argv 2 2]
set ceil_out [lrange $argv 3 3]
spawn telnet $nas_ip
expect "Login:"
send "user+ct\r"
expect "Password:"
send "passwd\r"
expect "user@host"
send "/ip firewall address-list remove \[/ip firewall address-list find address=$ip\] \r"
expect "user@host"
send ........

{code}