автозапуск скрипта (команды)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

-blaze-
Сообщения: 18

автозапуск скрипта (команды)

Сообщение -blaze- »

Помогите написать скрипт, который подымал бы ppp соединение (т.е. выполнялась команда pptp 192.168.0.1)через каждые 5 минут, если пинг на адрес www.yahoo.com не идет.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: автозапуск скрипта (команды)

Сообщение KiWi »

man 5 crontab
+
ping -W <n> -c 1 yahoo.com >/dev/null 2>&1 || pptp ....

p.s.: а вообще, поехали мы отсюда...
Спасибо сказали:
-blaze-
Сообщения: 18

Re: автозапуск скрипта (команды)

Сообщение -blaze- »

я нашел скриптик в статье, но не розберусь в нем сам, может кто поможет?
Вот он:

#!/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: автозапуск скрипта (команды)

Сообщение Cap. J2A »

вариант №1: опция persist (но это только в случае обрыва)
вариант №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
Спасибо сказали:
Аватара пользователя
clx
Сообщения: 3121
Статус: Think Different !
ОС: Mac OS X

Re: автозапуск скрипта (команды)

Сообщение clx »

Код: Выделить всё

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

##

#EOF
iMac 20" Core Duo.
Спасибо сказали: