Gnome 3 автоматическое выполнение скрипта, который нуждается в сети

Мой старый отец использует убунту-гном. У него нет статического IP-адреса. Для того, чтобы выполнить удаленное администрирование, мне нужно знать его ip. Я использовал бесплатную учетную запись dyndns (конфигурация в модеме adsl), но через пару дней она перестанет работать.

Я хотел бы запускать скрипт каждый раз, когда он входит в систему, чтобы опубликовать свой ip на моем сайте. Я пытался поставить скрипт на загрузку, но сеть не доступна. Кажется, что это гном 3, который запускает сеть, но я не знаю много о гноме 3.

Как мне сделать, чтобы мой скрипт запускался автоматически, как только сеть станет доступной?

2 ответа

Решение

Одним из возможных не элегантных решений для этого является помещение вашего скрипта в его cron для запуска каждые X минут:)

Глядя на мой /etc/NetworkManager/ похоже там есть папка dispatcher.d Я думаю, что это будет делать то, что вы хотите. Просто поэкспериментируйте со скриптом bash/perl/python w/e, чтобы установить соответствующее разрешение. Вы можете найти UUID в system-connections/ папка. Более подробная информация доступна в man networkmanager,

РЕДАКТИРОВАТЬ: Посмотрите, что я нашел: https://askubuntu.com/questions/13963/call-script-after-connecting-to-a-wireless-network. Похоже, это именно то, что вы хотите.

Самый простой способ - использовать другой динамический DNS-сервис. Я использовал свой собственный. Вы могли бы также поставить curl или же wget введите команду cron или создайте службу systemd, которая будет периодически вызывать эту команду. В качестве цели вы должны будете использовать свою машину с веб-сервером, где вы можете видеть IP в ваших журналах.

Это не Gnome, который соединяет сеть, это системная служба, называемая NetworkManager, Он пытается подключиться при загрузке, если это возможно. В некоторых случаях он ожидает беспроводного сигнала, в других случаях он ожидает пароль пользователя. Недавно я убедился, что в Fedora NetworkManager правильно реализует системные network-online.target но, возможно, это еще предстоит исправить в других дистрибутивах, см. вышеприведенный отчет об ошибках.

https://bugzilla.gnome.org/show_bug.cgi?id=728965

Если вы хотите запустить системный сервис сразу после загрузки, вам нужно использовать:

[Unit]
...
Wants=network-online.target
After=network-online.target

Вы также можете просто запустить скрипт, который вызывает nm-online в начале следует ожидать подключения к сети, если можно ожидать, что подключение установится в разумное время, в противном случае оно истечет. Такой сценарий может быть запущен из любой среды, включая сеанс пользователя.

И, как уже отмечалось, вы можете поместить скрипт в /etc/NetworkManager/dispatcher.d это будет вызвано при любом изменении конфигурации сети, и такой сценарий может затем отфильтровать события подключения и запустить сценарий уведомления.

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