Как я могу инициировать что-то, после того как я соединяюсь с Интернетом?

Интересно, как я могу заставить машину сделать что-то каждый раз, когда она соединяется с Интернетом?

как проверка обновления, после того как я подключен к Интернету?

Спасибо

4
задан 22 June 2011 в 11:38

4 ответа

Нет абсолютно никакого индикатора, который показывает, есть ли у Вас интернет-соединение или нет. Это вызвано тем, что Вы всегда соединяетесь с некоторым шлюзом (маршрутизатор, модем...), который настраивает соединение с Вашим ISP. Так, чтобы быть уверенными, онлайн ли Вы или нет, необходимо проверить соединение сами путем проверки с помощью ping-запросов или создания HTTP-соединения (использование curl например) и проверка результата. Но предупредите: ответ ping не означает, что у Вас может быть HTTP-соединение. И получение ответа HTTP не означает, что можно бродить по сети. Всегда необходимо проверять ответ.

Вы, несомненно, сможете иметь интернет-соединение, если Вы знаете ожидаемый ответ. Например, можно проанализировать веб-сайты как http://www.whatismyip.de/ для IP-адреса с помощью регулярных выражений. Если Ваше регулярное выражение корректно, и оно не находит IP-адрес затем, у Вас нет интернет-соединения.

Короткий ответ: Запишите сценарий, в который Вы проверяете интернет-соединение (как описанный выше). На успехе Вы выполняете команды, Вы хотите и устанавливаете флаг, что Вы сделаны на сегодняшний день (просто создают файл и проверку на существование), при отказе Вы ничего не делаете. Сделайте тот сценарий cronjob.

2
ответ дан 1 December 2019 в 09:56

Сценарий, который Вы ищете, похож на это

[ -n "$(curl -s icanhazip.com | grep ^[0-9])" ] && firefox
  • "вихревой icanhazip.com" возвращает адрес IP, если Вы онлайн
  • "grep ^ [0-9]" проверки, если первый символ является цифрой
  • "[-n "..."] &&" означает, "если это верно, продолжите двигаться к следующей команде (который в моем примере является "Firefox")"
  • Это - быстрый взлом, и этот сценарий не будет работать, если icanhazip.com снизится или если у Вас есть адрес IPv6.

Для легкой установки cronjob для выполнения его каждый x минуты можно установить "расписание гнома".

1
ответ дан 1 December 2019 в 09:56

Администратор сети выставляет интерфейс DBus, который можно использовать, чтобы быть уведомленными, когда Вы соединяетесь с сетью. Это будет обычно означать, что Вы подключены к Интернету также, но я не знаю, есть ли у Администратора сети какие-либо методы для того, чтобы на самом деле подтвердить это. Вы могли бы хотеть использовать Администратора сети, чтобы быть уведомленными, когда Вы соединяетесь с сетью, затем подтвердите, что у Вас есть доступ в Интернет и если так, сделайте то, что Вы хотите.

1
ответ дан 1 December 2019 в 09:56

Как dAnjou сказал, я не полагаю, что существует триггер, который можно использовать.

Однако для проверки на Интернет-соединение существует более легкий путь, чем использование завихрения. Используйте fping следующим образом, который возвращается 0, если соединено и 2 если нет. См. руководство fping для получения дополнительной информации.

fping -q example.com

(Используя example.com допустимо, потому что доменное имя существует даже при том, что оно резервируется для тестирования.)

Упрощение примера Davidc становится:

fping -q example.com && firefox
0
ответ дан 1 December 2019 в 09:56

Другие вопросы по тегам:

Похожие вопросы: