Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Скрипт мониторинга и запуска сетевых интерфейсов.  (Прочитано 2552 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Всем привет!
Прошу помощи в написании скрипта.
В удаленном подразделении где нет проводного интернета стоит ПК, который раздает интернет с 4g модема.
Иногда инет пропадает, и на этот случай я по расписанию запускаю скрипт, который поднимает соединение:
#!/bin/bash
/bin/ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
/sbin/ifdown ppp0
/bin/sleep 2
killall -9 pppd
/bin/sleep 2
/sbin/ifup ppp0 &
/bin/sleep 45
fi
Скрипт отлично помогает, он не рвет соединение если оно есть...
Но также в этом подразделении должен использоваться pptp vpn, и иногда это соединение рвется, и его нужно перезапускать, понятное дело, что pptp работает поверх ppp 4g модема, а в скрипте есть
killall -9 pppdчто не хотелось бы делать, если к примеру ppp есть, а pptp нету. Запускаю pptp так:
pon vpnПодскажите пожалуйста, как автоматизировать эту задачку...

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
pptp vpn, и иногда это соединение рвется, и его нужно перезапускать
После проверки добавить еще одну: на pptp vpn
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Azure, пардон...  не понял где и как...
так?
#!/bin/bash
/bin/ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
/sbin/ifdown ppp0
/bin/sleep 2
killall -9 pppd
/bin/sleep 2
/sbin/ifup ppp0 &
/bin/sleep 45  # тут надо дать время подняться ppp чтобы и pptp потом смог подняться
bin/ping ШЛЮЗ_ВПН -c 10 -q -w 30 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
/sbin/ifdown ppp12 #vpn
/bin/sleep 2
killall -9 pppd   #в данном случае это нельзя делать, т.к. тогда и инет пропадет
/bin/sleep 2
pon vpn
/bin/sleep 45
fi
« Последнее редактирование: 28 Января 2017, 11:43:27 от kolesov »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
не понял где и как..
Как Вы спросили так и ответил… Сформулируйте так чтоб было понятно. Например
ВариантыКак проверяем    Что делаем
ррр есть, vpn есть    ping через vpnНичего
ррр нет, vpn нетping 8.8.8.8Рестарт ррр
ррр есть, vpn нетping 8.8.8.8Рестарт vpn

Пользователь добавил сообщение 28 Января 2017, 15:05:38:
Насколько я понял задачу алгоритм должен быть такой: проверяем host внутри vpn: если доступен — все работает, если нет проверяем ррр: доступно — перезапускаем vpn / нет — перезапускаем все.
« Последнее редактирование: 28 Января 2017, 15:05:38 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
kolesov,
1. Чтобы не писать полые пути к программам, нужно добавить в начало:
Код: (bash) [Выделить]
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2.
Код: (bash) [Выделить]
/bin/ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
равно
Код: (bash) [Выделить]
if ! ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
then

3. Делай отступы в конструкциях чтобы код было понятнее читать и понимать.
Код: (bash) [Выделить]
if выражение/код...
then
код...
fi

4. Условие с проверкой наличия процесса:
Код: (bash) [Выделить]
if ps -C process_name &>/dev/null
then
код...
else
код...
fi

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Azure, да примерно так как Вы написали, но точнее будет так:
Варианты:     Как проверяем:     Что делаем:
ррр нет, vpn нет ping 8.8.8.8, ping vpn_gw killall ррр, ждем пока поднимется ppp, запуск vpn
ррр есть, vpn нет ping 8.8.8.8, ping vpn_gw (ppp не трогаем, интернет должен оставаться) ifdown vpn_iface, запуск vpn
ррр есть, vpn есть    ping 8.8.8.8, ping vpn_gw    Ничего

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
watch "date +%T"
Wars ~.o

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
ping vpn_gw
Вам не даст понимания о работе vpn: нужно пинговать ресурс доступный только через vpn. Шлюз доступен обычной сетью.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Azure, я и имел в виду, адрес шлюза для сети pptp.
В результате сделал себе такой скрипт:
#!/bin/bash
/bin/ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
rez=$?
if [ $rez != 0 ]; then
/sbin/ifdown ppp0
/bin/sleep 2
killall -9 pppd
/bin/sleep 2
/sbin/ifup ppp0 &
/bin/sleep 45
fi
/sbin/ifconfig | grep ppp12
ifc=$?
if [ $ifc != 0 ]; then
/usr/bin/poff vpn
/bin/sleep 5
/usr/bin/pon vpn
/bin/sleep 45
fi
exit 0
« Последнее редактирование: 31 Января 2017, 00:05:55 от kolesov »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
kolesov, Зря Вы игнорируете замечания коллеги renzrv, они весьма к месту.
Наличие поднятого интерфейса не гарантирует его работу.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.039 секунд. Запросов: 25.