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 Все работает. Спасибо за помощь Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.