Интересно, как я могу заставить машину сделать что-то каждый раз, когда она соединяется с Интернетом?
как проверка обновления, после того как я подключен к Интернету?
Спасибо
Нет абсолютно никакого индикатора, который показывает, есть ли у Вас интернет-соединение или нет. Это вызвано тем, что Вы всегда соединяетесь с некоторым шлюзом (маршрутизатор, модем...), который настраивает соединение с Вашим ISP. Так, чтобы быть уверенными, онлайн ли Вы или нет, необходимо проверить соединение сами путем проверки с помощью ping-запросов или создания HTTP-соединения (использование curl
например) и проверка результата. Но предупредите: ответ ping не означает, что у Вас может быть HTTP-соединение. И получение ответа HTTP не означает, что можно бродить по сети. Всегда необходимо проверять ответ.
Вы, несомненно, сможете иметь интернет-соединение, если Вы знаете ожидаемый ответ. Например, можно проанализировать веб-сайты как http://www.whatismyip.de/ для IP-адреса с помощью регулярных выражений. Если Ваше регулярное выражение корректно, и оно не находит IP-адрес затем, у Вас нет интернет-соединения.
Короткий ответ: Запишите сценарий, в который Вы проверяете интернет-соединение (как описанный выше). На успехе Вы выполняете команды, Вы хотите и устанавливаете флаг, что Вы сделаны на сегодняшний день (просто создают файл и проверку на существование), при отказе Вы ничего не делаете. Сделайте тот сценарий cronjob.
Сценарий, который Вы ищете, похож на это
[ -n "$(curl -s icanhazip.com | grep ^[0-9])" ] && firefox
Для легкой установки cronjob для выполнения его каждый x минуты можно установить "расписание гнома".
Администратор сети выставляет интерфейс DBus, который можно использовать, чтобы быть уведомленными, когда Вы соединяетесь с сетью. Это будет обычно означать, что Вы подключены к Интернету также, но я не знаю, есть ли у Администратора сети какие-либо методы для того, чтобы на самом деле подтвердить это. Вы могли бы хотеть использовать Администратора сети, чтобы быть уведомленными, когда Вы соединяетесь с сетью, затем подтвердите, что у Вас есть доступ в Интернет и если так, сделайте то, что Вы хотите.
Как dAnjou сказал, я не полагаю, что существует триггер, который можно использовать.
Однако для проверки на Интернет-соединение существует более легкий путь, чем использование завихрения. Используйте fping следующим образом, который возвращается 0, если соединено и 2 если нет. См. руководство fping для получения дополнительной информации.
fping -q example.com
(Используя example.com допустимо, потому что доменное имя существует даже при том, что оно резервируется для тестирования.)
Упрощение примера Davidc становится:
fping -q example.com && firefox