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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
Всем привет!
Прошу помощи в написании скрипта.
В удаленном подразделении где нет проводного интернета стоит ПК, который раздает интернет с 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

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

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
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

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6015
  • 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

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
kolesov,
1. Чтобы не писать полые пути к программам, нужно добавить в начало:
Код: Bash
  1. export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2.
Код: Bash
  1. /bin/ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
  2. rez=$?
  3. if [ $rez != 0 ]; then
равно
Код: Bash
  1. if ! ping 8.8.8.8 -c 10 -q -w 30 &>/dev/null
  2. then

3. Делай отступы в конструкциях чтобы код было понятнее читать и понимать.
Код: Bash
  1. if выражение/код...
  2. then
  3.         код...
  4. fi

4. Условие с проверкой наличия процесса:
Код: Bash
  1. if ps -C process_name &>/dev/null
  2. then
  3.         код...
  4. else
  5.         код...
  6. fi

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
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

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
watch "date +%T"
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Azure

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

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
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

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

 

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