handler Опубликовано 17 января, 2010 Жалоба Опубликовано 17 января, 2010 И снова здравствуйте! Имеется два адсл-модема: один перезагружается командой 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 Так все работает за исключением того, что управление из второго скрипта возвращается командной строке, а не первому скрипту, а нам необходимо вернуться в первый скрипт! Какие будут предложения? Цитата
handler Опубликовано 18 января, 2010 Автор Жалоба Опубликовано 18 января, 2010 Сейчас весь скрипт выглядит следующим образом: #!/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 Все работает. Спасибо за помощь Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.