автозапуск скрипта (команды)
Модератор: Bizdelnick
-
-blaze-
- Сообщения: 18
автозапуск скрипта (команды)
Помогите написать скрипт, который подымал бы ppp соединение (т.е. выполнялась команда pptp 192.168.0.1)через каждые 5 минут, если пинг на адрес www.yahoo.com не идет.
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: автозапуск скрипта (команды)
man 5 crontab
+
ping -W <n> -c 1 yahoo.com >/dev/null 2>&1 || pptp ....
p.s.: а вообще, поехали мы отсюда...
+
ping -W <n> -c 1 yahoo.com >/dev/null 2>&1 || pptp ....
p.s.: а вообще, поехали мы отсюда...
-
-blaze-
- Сообщения: 18
Re: автозапуск скрипта (команды)
я нашел скриптик в статье, но не розберусь в нем сам, может кто поможет?
Вот он:
Вот он:
#!/usr/bin/perl
unless (-e "/var/run/ppp0.pid") {
/usr/bin/startppp
}
Скрипт startppp будет осуществлять запуск VPN-клиента. Теперь добавляем проверку в кронтаб. Для этого набираем crontab -e и пишем следующее:
*/10 * * * * /usr/bin/checkvpn > /dev/null 2>&1
Теперь запуск скрипта будет производиться каждые 10 минут.
-
Cap. J2A
- Сообщения: 300
Re: автозапуск скрипта (команды)
вариант №1: опция persist (но это только в случае обрыва)
вариант №2: несколько более интеллектуально (творил сам для личных нужд) http://wiki.atmsk.ru/index.html/OTKPermanentConnection
P.S. Вышеприведенный код делает то же самое, что и опция persist в pppd: восстанавливает соединение при потере связи, но не пропадании пинга.
вариант №2: несколько более интеллектуально (творил сам для личных нужд) http://wiki.atmsk.ru/index.html/OTKPermanentConnection
P.S. Вышеприведенный код делает то же самое, что и опция persist в pppd: восстанавливает соединение при потере связи, но не пропадании пинга.
Debian GNU/Linux 3.1 2.6.12-1-k7 на AXP1700+/nF2/Radeon 9600 (debsmart)
Debian GNU/Linux 3.1 2.6.15.1 на hp compaq nx9020 (moby)
:Wq
E492: Not an editor command: Wq
Debian GNU/Linux 3.1 2.6.15.1 на hp compaq nx9020 (moby)
:Wq
E492: Not an editor command: Wq
-
clx
- Сообщения: 3121
- Статус: Think Different !
- ОС: Mac OS X
Re: автозапуск скрипта (команды)
Код: Выделить всё
#!/usr/bin/perl
use Net::Ping;
my $server = "10.1.1.1";
my $out = `cat /proc/net/dev | grep ppp`;
if ($out =~ /^$/) {
print "no PPP!\n";
$p = Net::Ping->new();
if ($p->ping($server)) {
print "server is ok. Starting tunnel...\n";
`sh /opt/vpn_start`;
}
# else { print "Server is not alive. Probably network is down...\n"; }
$p->close();
}
#else { print "PPP is OK\n"; }Код: Выделить всё
#!/bin/bash
#val.sh
#Options
#Your MUST set this variables
PEER_FILE="clx"
DOSYSLOGMSG="1"
PAUSE="15"
##
#Optional variables
PPPD_OPTIONS=""
TESTHOST1=""
TESTHOST2=""
TESTHOST3=""
##
##
#Functions
do_connect()
{
pppd call $PEER_FILE $PPPD_OPTIONS
sleep $PAUSE
#Postconnect actions
route add default gw 10.1.1.1
##
if do_test_connect
then
return 0
else
return 1
fi
}
do_kill_connect()
{
killall pppd 2> /dev/null
sleep $PAUSE
}
host_alive()
{
if ping -c 1 -I ppp0 $1 > /dev/null
then
return 0
else
return 1
fi
}
do_test_connect()
{
if host_alive ${TESTHOST1:-google.com}
then
return 0
else
if host_alive ${TESTHOST2:-kernel.org}
then
echo "${TESTHOST1:-google.com} is down"
return 0
else
if host_alive ${TESTHOST3:-ya.ru}
then
echo "${TESTHOST1:-google.com} and ${TESTHOST2:-kernel.org } are down"
return 0
else
return 1
fi
fi
fi
}
do_logger_test()
{
if [ -f /usr/bin/logger ]
then
return 0
else
echo "I can't find /usr/bin/logger . This is part of sys-apps/util -linux... If you want have report in syslog, please install it."
return 1
fi
}
##
#Body
if do_test_connect
then
# echo "connected"
exit 0
else
# echo "connect not detected"
do_kill_connect
if do_connect
then
exit 0
else
echo "`date` : Connection lost. I\'m CAN\'T connecting."
[ "$DOSYSLOGMSG" = "1" ] && do_logger_test && logger "`basenam e $0` Connection lost, can't reconnect."
exit 1
fi
fi
##
#EOFiMac 20" Core Duo.