Как запустить скрипт в зависимости от интернет-соединения

Как запустить скрипт в зависимости от интернет-соединения

Я часто монтирую удаленный диск с помощью sshfs. Мне бы хотелось, чтобы это монтирование происходило автоматически. Однако, если я монтирую его в своем .bashrc или скриптах запуска, монтирование часто не удается, поскольку мое беспроводное подключение к Интернету еще не установлено.

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

решение1

Добавьте ваш скрипт в /etc/network/if-up.d/. Назовите ваш скрипт без расширения «.sh».

Также после добавления скрипта запустите его chmod +x /etc/network/if-up.d/yourscriptname, чтобы предоставить необходимые разрешения.

Убедитесь, что сетевой интерфейс (например, wlan0 или eth0), который должен запускать ваш скрипт при включении, указан в файле /etc/network/interfaces.

решение2

Примечание редактора: Cuttlefish не обновлялся с 2012 года и не входит ни в один из текущих репозиториев Ubuntu.

Убунту 12.04

  • УстановитьКаракатица: Простой инструмент, который реализует рефлексы на вашем компьютере, выполняя действия при возникновении определенных событий.
  • Откройте Cuttlefish и нажмите на New.

    Шаг 1

    • Дайте ему имя и изменитеАктивируется стимуломвариант ВКЛ.
    • Нажмите наСтимул, выберите категориюСетьи типПодключиться к беспроводной локальной сети. Нажмите ОК.

    Шаг 2

    • Вы также можете выбрать SSID беспроводной сети и включить или отключить его проверку при запуске.

    Шаг 3

    • Теперь вам нужно будет указать реакцию. Перейти кРеакциявкладку и нажмите добавить. ВыберитеПриложенияиз категории иЗапустить приложение (в расширенном режиме)от типа.

    Шаг 4

    • Теперь укажите скрипт, который вы хотите запустить в исполняемом параметре. Вы даже можете передать параметры скрипту.

    Шаг-5

    • И все! Также убедитесь, что вы добавили Cuttlefish в автозагрузку приложений. Перейти кРедактировать > Настройкии включите опцию автозапуска.

    Шаг-6

решение3

Я отвечу на эту часть вопроса автора: «Я бы хотел иметь это ездовое животное автоматически»

Мой любимый инструмент для автоматического монтирования сетевых ресурсов — autofs: https://help.ubuntu.com/community/Autofs

AutoFS — мой любимый инструмент для монтирования NAS-устройства на всех моих ноутбуках и рабочих станциях.

"autofs — это программа для автоматического монтирования каталогов по мере необходимости. Автоматические монтирования монтируются только при доступе к ним и отмонтируются после определенного периода бездействия. Благодаря этому автоматическое монтирование общих ресурсов NFS/Samba экономит пропускную способность и обеспечивает лучшую общую производительность по сравнению со статическими монтированиями через fstab."

решение4

systemdпохоже, в наши дни сетевое взаимодействие взяло верх.

$ networkctl
WARNING: systemd-networkd is not running, output will be incomplete.

IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           n/a         unmanaged
  2 enp0s25          ether              n/a         unmanaged
  3 wlo1             wlan               n/a         unmanaged

3 links listed.

Он также имеет блоки, соответствующие интерфейсам.

$ systemctl list-units |grep wlo1
sys-devices-pci0000:00-0000:00:1c.3-0000:24:00.0-net-wlo1.device                                                        loaded active plugged   Centrino Ultimate-N 6300 (3x3 AGN)
sys-subsystem-net-devices-wlo1.device                                                                                   loaded active plugged   Centrino Ultimate-N 6300 (3x3 AGN)

Видимо, вы можете использовать их в файлах единиц обслуживания. Так что просто создайте единицу обслуживания для запуска вашего скрипта и используйте что-то вроде этого внутри, чтобы заставить его работать условно в сети:

BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device

Удачи! Я это не проверял, так что "ваши результаты могут отличаться".

Источники:

Связанный контент