Автор Гілка: Скрипт автоматичного з'єднання  (Прочитано 2893 раз)

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Мої вітання.

Стоїть сервер, який під'єднанний до провайдера через модем dsl підключенний через vpn-тунель. В мене стоїть скрипт який кожну хвилину перевіряє наявніть ppp0 і в разі відсутності інтерфейсу, запускає з'єднання. На практиці було виявленно, що інколи зникає інтернет, тобто не ping`гуються dns`и та шлюз провайдера, але при цьому ppp0 залишається. Тобто скрипт при таких умов не може поновити з'єднання. Якщо вручну зупинити vpn-з'єднання, то ppp0 -зникає й скрипт поновлює з'єднання. Допоможіть модифікувати скрипт таким чином, щоб він перевіряв наявність не тільки ppp0, але й шлюзу та двох dnd, і якщо нема ppp0, або шлюзу, або двох одночасно dns. Можливо достатьньо буде й перевірки ppp0 та двох dnd.

#!/bin/sh
restart_pptp()
{
/usr/sbin/pptp-command stop vpn1;

if /usr/sbin/pptp-command start vpn1; then
    echo  "`date +%d.%m.%y_%H:%M:%S` PPTP Restarted" >> /var/log/ppp/cron.pptp;
fi
}

if ifconfig ppp0 | grep ppp > /dev/null; then
echo "`date +%d.%m.%y_%H:%M:%S` PPTP test Ok" >> /var/log/ppp/cron.pptp;
exit 0;
else
   echo "`date +%d.%m.%y_%H:%M:%S` Attempting to restart PPTP" >> /var/log/ppp/cron.pptp;
   restart_pptp > /dev/null 2>&1 &
fi
Linux. The future is open.

Відсутній Sirko

  • Графоман
  • ****
  • дописів: 299
  • Карма: +0/-0
  • Що новенького?
Re: Скрипт автоматичного з'єднання
« Відповідей #1 : 2006-10-24 15:11:16 »
А до дати до конвеєра ping на DNS чи шлюз прова? Щось типу
if ifconfig ppp0 | grep ppp | ping 123.456.789.1 > /dev/null;
або
if ifconfig ppp0 | grep ppp > /dev/null && ping 123.456.789.1 | grep time;
чи щось таке? Спробуй, можливо допоможе ;)
[Kubuntu User]

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Re: Скрипт автоматичного з'єднання
« Відповідей #2 : 2006-10-24 21:04:41 »
А до дати до конвеєра ping на DNS чи шлюз прова? Щось типу
if ifconfig ppp0 | grep ppp | ping 123.456.789.1 > /dev/null;
або
if ifconfig ppp0 | grep ppp > /dev/null && ping 123.456.789.1 | grep time;
чи щось таке? Спробуй, можливо допоможе ;)

Так, але я поки докумекаю, як його правильно вписати.... І ще ping може з першого разу не пройти, якщо канал перевантажено, то треба відіслати хоча б три ping на кожний dns...
Linux. The future is open.

Відсутній Паша

  • Кореспондент
  • ***
  • дописів: 142
  • Карма: +0/-0
  • хайо!
Re: Скрипт автоматичного з'єднання
« Відповідей #3 : 2006-10-25 08:42:17 »
ping -c 3 123.456.789.1
debian

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Re: Скрипт автоматичного з'єднання
« Відповідей #4 : 2006-10-30 17:25:41 »
Як мені тебер все це об'єднати в if ifconfig ppp0 | grep ppp > /dev/null; ?

ifconfig ppp0 | grep ppp

ping -c 3 123.456.789.1 | grep time

ping -c 3 123.456.789.2 | grep time

І чи воно спрацює коли буде From 123.456.799.15 icmp_seq=1 Destination Host Unreachable ?
Linux. The future is open.

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Re: Скрипт автоматичного з'єднання
« Відповідей #5 : 2006-12-11 21:00:36 »
Може комусь цікавий скрипт буде, то я викладу. Зробив простіше, поставив на виконання кожніх 2 хв. інший скрипт, який осилив самостійно написати.

#!/bin/bash
ping 123.456.789.1 -c 4 -q -w 8 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
echo "`date +%d.%m.%y_%H:%M:%S` Attention PPP DNS1" >> /var/log/ppp/cron.pp;
ping 123.456.789.2 -c 4 -q -w 8 &>/dev/null
rez=$?
else echo "`date +%d.%m.%y_%H:%M:%S` PPP OK" >> /var/log/ppp/cron.pp;
if [ $rez != 0 ]; then
echo "`date +%d.%m.%y_%H:%M:%S` Stopping PPP DNS2" >> /var/log/ppp/cron.pp;
/usr/sbin/pptp-command stop vpn1;
fi
fi

Тобто, якщо не ping`уються сервера, то скрипт припиняє vpn-з'єднання. А той перший за таких умов поновлює з'єдняння.

P.S. Якщо осилю, то може якось bind налаштую (з двох разів не вдалося  :) ), то можна буде тільки vpn-сервер перевіряти...  ::)
Linux. The future is open.