Jump to content
Sign in to follow this  
handler

bash+expect

Recommended Posts

И снова здравствуйте!

Имеется два адсл-модема:

один перезагружается командой wget ip_addr_adsl_modem/reboot.cgi

второй - командой telnet ip_addr_adsl_modem ...

Задача: написать один скрипт перезагрузки обоих модемов.

Задача тривиальная и по отдельности для каждого модема решается просто:

script_1.sh

#!/bin/sh

wget 192.168.1.1/reboot.cgi

script_2.sh

#!/usr/bin/expect

spawn telnet 192.168.1.2

expect "Password:"

send "Blah-Blah-Blah\r"

expect "ADSL>"

send "wan adsl reset\r"

Опытный админ сразу заметит, что заголовки скриптов несовместимы, т. е. просто объединить их нельзя.

Пробовал в один скрипт вставить другой командой exec:

script_1.sh

#!/bin/sh

wget 192.168.1.1/reboot.cgi

exec ./script_2.sh

#another code here

Так все работает за исключением того, что управление из второго скрипта возвращается командной строке, а не первому скрипту, а нам необходимо вернуться в первый скрипт!

Какие будут предложения?

Share this post


Link to post
Share on other sites

Сейчас весь скрипт выглядит следующим образом:

#!/bin/bash

COUNT = 2

SRV = 2ip.ru

ADSL1 = eth1

ADSL2 = eth2

IP_ADSL1 = 192.168.1.1

ping -c $COUNT -I $ADSL1 $SRV > /dev/null

if [ $? -ne 0 ]; then

echo 'BAD'

wget -q --user='user' --password='password' http://$IP_DSL1/rebootinfo.cgi

rm -f rebootinfo.cgi

else

echo "1 - OK"

fi

ping -c $COUNT -I $ADSL2 $SRV > /dev/null

if [ $? -ne 0 ]; then

echo 'BAD'

./tel2

else

echo "2 - OK"

fi

./tel2

#!/bin/bash

expect <<eof

log_user 1

set timeout 3

spawn telnet 192.168.2.1

expect "Password:"

send -- "password\r"

expect "ADSL>"

send "wan adsl reset\r"

send "exit\r"

expect eof

sleep 120

done

exit 0

Все работает. Спасибо за помощь

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...