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


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

Автор Тема: Запуск приложения только при условии если подкл. интернет  (Прочитано 1129 раз)

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

KEIII

  • Автор темы
  • Гость
Доброго времени суток!

Имеется программа Mail Notification 5.4 (mail-notification) для проверки почты (появляется значек в трее при получении новых сообщений)
Если ее добавить в автозапуск, то при старте в трее появляется значек ошибки (тут все нормально т.к. интернет не подключен)
Так вот, хотелось бы написать скрипт, чтобы запускал программу только если есть интернет. Сам в написании скриптов не силен, так что проше помощи у вас.

ps. интернет через vpn подкл. с помощью nm

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Инфу о состоянии подключения можно взять из nm-tool.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Что-то типа такого:

ping -c 2 -q www.yandex.ru | grep -q "0% packet loss" && команда запуска Mail Notification.
 
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн alecsartania

  • Старожил
  • *
  • Сообщений: 1564
  • УМка.
    • Просмотр профиля
Если с ожиданием то так:



#!/bin/bash
inet=10;
#Ожидаем здесь пока интернета нет
while [ $inet -ne 1 ] ; do
if (ping -c 2 -q www.yandex.ru  | grep -q "0% packet loss"  ) ; then
    echo "Есть интернет";
    inet=1;
    continue;
else
    echo "Нет интенета"
fi
sleep 10 # спим чтобы не грузить проц в 10 секунд запустимся
done

echo "Здесь запуск сетевых программ"
#end of file
Дома Linux Mint 20.1 / 20.02

KEIII

  • Автор темы
  • Гость
Спасибо большое!

Только с проверкой не получается, т.е. если инет есть то все путем, если же вкл. локальная сеть, но vpn не работает - определяет как "инет есть".
В коньках я вот так писал:
${if_existing /proc/net/route ppp0} ... ${endif}

(Нажмите, чтобы показать/скрыть)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Наличие сети определяется по пингу Яндекса (хе-хе, яндекс чаще пингуют, чем используют ;)) ).
В теме так и значилось - "если подкл. интернет".
Команда ping отправляет 2 пакета и ловит ответы. Если оба ответа получены, считает, что соединение есть.
С подробностями можно ознакомиться в man ping и man grep
Я с vpn никогда дела не имел, поэтому не знаю, что там и как.

Вероятно, кто-то отвечает на пинги вместо яндекса.

Вам достаточно поменять строку с конвейером ping | grep на что-то другое, чтобы достичь желанного.

Возможно, это где-то в логах есть.
Тут упоминался nm-tool.
« Последнее редактирование: 22 Апреля 2009, 16:57:21 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

KEIII

  • Автор темы
  • Гость
Кажется разобрался, с пингом все было нормально.

grep -q "0% packet loss" заменил на grep -q ", 0% packet loss"

Большое спасибо ArcFi, alecsartania, wl ;)
« Последнее редактирование: 22 Апреля 2009, 17:36:13 от KEIII »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Точно!
"0%"  соответствует и 100% и 0%.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

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