Что не так со скриптом? Помогите пожалуйста :(
Здравствуйте уважаемые.
Помогите разобратся со скриптом....
#!/bin/bash
LOGFILE='/var/log/ping-script.log'
testdns="192.168.200.3"
testgateway="11.22.33.44"
echo `date` Cheking connection to ISP gateway >> $LOGFILE
kol1=$(ping -c 4 $testgateway | grep "received" | awk '{print $4}')
if [ $kol1 == 0 ]
then
echo `date` Нет пинга до шлюза 11.22.33.44, Ждём 1 минуту >> $LOGFILE
sleep 60
kol1=$(ping -c 4 $testgateway | grep "received" | awk '{print $4}')
if [ $kol1 == 0 ]
then
echo `date` Starting reconnect to ISP >> $LOGFILE
/etc/init.d/net.ppp0 restart
echo `date` Reconnect to ISP complete >> $LOGFILE
exit 0
fi
fi
echo `date` Cheking coonetion to ISP complete >> $LOGFILE
#------------------------------------------------------------------------------
echo `date` Cheking connection DNS 192.168.200.3 >> $LOGFILE
kol=$(ping -c 4 $testdns | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo `date` Нет пинга до DNS 192.168.200.3, Ждём 1 минуту >> $LOGFILE
sleep 60
kol=$(ping -c 4 $testdns | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo `date` Starting reconnect to main office >> $LOGFILE
/usr/sbin/poff vpn1
sleep 15
/usr/sbin/pon vpn1
echo `date` Reconnect to main office complete >> $LOGFILE
exit 0
fi
fi
echo `date` Cheking coonetion to main office complete >> $LOGFILE
Проблема в том что, этот сервер находится от меня за 400 Км, и я не могу на его физически воздейтсвовать и вступать с ним в физический клавиатурный контакт (о как завернул) а мне нужно что бы он при разрыве связи с нашим офисом (он подключается к нашему виндовому впн-серваку, получает доступ к нам в локаль и далее исполняет роутерские роутинги) он её восстанавливал, но перед тем как он подключается к нам в локаль, он сначала поднимает Интернет-соединение, после чего он подключается к нам на сервак и входит в локаль.
Установив данный скрипт в /etc/cron.hourly т.е. на ежечасное исполнение, стал тестировать, сначала разорвал меж-офисное соединение (ppp1) командой POFF VPN1 через час скрипт его восстановил... обрадовался, решил протестировать соединение между провайдером, отключил связь с провайдером командой /etc/init.d/net.ppp0 stop ВСЕ, этот скрипт ни через час ни через три ни через сутки так и не поднял соединение, пока не позвонил в понедельник программеру и не попросил его нажать на кнопочку RESET на морде компа...
Блин, в чем проблема то а? Не подскажете куда копать?
- Для комментирования войдите или зарегистрируйтесь
ping
если вырубить net.ppp0, то ping возвращает - connect: Network is unreachable - и поэтому $kol != 0
если я тебя правильно понял, конечно.... :-)
-
Правильно поняли... вот только как из этой ситуэйшэн выйти, я не силен в баш-е :-(
PLZ помоги...
Ну так засунь
Ну так засунь все в еще один if и проверяй или `ping -c 4 $testdns | grep "Network is unreachable" | wc -l` или `ip addr | grep ppp0 | wc -l`, и результат сравнивай с 0 или 1 по необходимости
хм
ну попробуй например сначала проверять запущено ли net.ppp0, и если нет, то стартуешь его... только после этого можешь пинговать....
para1=$(/etc/init.d/net.ppp0 status | awk '{ print sub("started","started") }')
#если started, то $para1 будет равно 1, а если нет - 0.
if [ $para1 == 0 ]
then
/etc/init.d/net.ppp0 start
fi
после этого можно и пинговать.
-
Но ведь если нет пингов то нет и соединения, и вот я его после минутного ожидания пытаюсь рестартовать... а он не рестартует... чем проверка пингов отличается от проверки статуса сединенй?
Пожалуйста разъясните, очень прошу Вас...
если
если действительно хочешь разобраться, то спокойно и неторопясь прочитай мануалы по
командам из этой строки: kol1=$(ping -c 4 $testgateway | grep "received" | awk '{print $4}').
разберись что эта строчка делает... и спрашивай что непонятно конкретно...