LinuxForum.Fans
Тема

Скрипт для проверки ppp0 и Cron

Автор: santic 6 сообщений 4625 просмотров
#220886

Приветствую, накалякал простенький скрипт, который "проверяет" наличие интерфейса ppp0. Если последнего нет, то срабатывает другой скрипт:

text
#!/bin/bash

vivod=$(ifconfig | grep -w ppp0)

if [[ "$vivod" != ppp0* ]]; then /etc/init.d/xl2tpd restart; fi

Засунул его в cron, чтобы он каждую минуту скрипт дергал. Из терминала скрипт работает без проблем. В случае cron - соединение начинает обрываться => выполняется строчка - /etc/init.d/xl2tpd restart;

Есть ли другой способ проверки соединения (автоматически)?

#220899

Вариант раз:

text
grep -q ppp0 /proc/net/dev || /etc/init.d/xl2tpd restart >> /root/!inetlog

>> /root/!inetlog - можно убрать, просто > /dev/null
Вариант два:

text
if [ ! -f /proc/net/dev_snmp6/ppp0 ]
   then
   echo ""
   /etc/init.d/xl2tpd restart
   pppoe-start
   else
   echo ""
fi

Поместить в файло, допустим /usr/local/sbin/ppptest вызов из крона:
bash /usr/local/sbin/ppptest

#220902
newzenon написал:
Вариант раз:
text
grep -q ppp0 /proc/net/dev || /etc/init.d/xl2tpd restart >> /root/!inetlog

>> /root/!inetlog - можно убрать, просто > /dev/null
Вариант два:

text
if [ ! -f /proc/net/dev_snmp6/ppp0 ]
   then
   echo ""
   /etc/init.d/xl2tpd restart
   pppoe-start
   else
   echo ""
fi

Поместить в файло, допустим /usr/local/sbin/ppptest вызов из крона:
bash /usr/local/sbin/ppptest

Выбрал второй вариант. Спасибо - работает. Оказывается решение простое :D

#220903

santic, только зачем restart, если интерфейс опущен? Просто start, у меня еще pid процесса не убивался, я его просто rm -f /var/run/ppp0.pid

#220905
newzenon написал:
santic, только зачем restart, если интерфейс опущен? Просто start, у меня еще pid процесса не убивался, я его просто rm -f /var/run/ppp0.pid

Это уже другая история =) С restart ppp0 работать начинает. Правда сброс сессии у провайдера напрягает.

#220981

Я узаю такой.

[console]
#!/usr/bin/perl -w
use File::Copy;
use Net::Ping;
use POSIX ();

my $date = POSIX::strftime('%y.%m.%d %H.%M.%S', localtime);
my $pidfile = "/var/run/xl2tpd.pid";
my $log = "/var/log/ping.log";
my $size = (-s $log);
my $max = "1024";

open (FH1, ">> $log");
my $ip = '8.8.8.8';
my $p = Net::Ping->new( "icmp", 5, 64 );

if ( $p->ping($ip) ) {
} else {
if( -e($pidfile) && -T _)
{
system (`/etc/init.d/xl2tpd restart`);
print FH1 "$date ping NO L2TP restart", "\n";
}
else
{
system (`/etc/init.d/xl2tpd start`);
print FH1 "$date ping NO L2TP start", "\n";
}
}
close (FH1);[/console]

Войдите или зарегистрируйтесь, чтобы ответить.