Перейти к содержанию

bash+expect


Рекомендуемые сообщения

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

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

один перезагружается командой 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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

#!/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

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...