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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

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

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

Оффлайн KEIII

  • Автор темы
  • Активист
  • *
  • Сообщений: 368
    • Просмотр профиля
Доброго времени суток!

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

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

Оффлайн ArcFi

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

Оффлайн wl

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

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

Оффлайн alecsartania

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



#!/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 15 ||  Ubuntu 14.04  / Минт 17.03
Работа: Linux Mint 18(Ub 16.04)

Оффлайн KEIII

  • Автор темы
  • Активист
  • *
  • Сообщений: 368
    • Просмотр профиля
Спасибо большое!

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

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

Оффлайн wl

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

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

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

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

Оффлайн KEIII

  • Автор темы
  • Активист
  • *
  • Сообщений: 368
    • Просмотр профиля
Кажется разобрался, с пингом все было нормально.

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

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

Оффлайн wl

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

 

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