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

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

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

49
задан 1 February 2015 в 02:33

6 ответов

Добавьте свой сценарий к /etc/network/if-up.d/. Назовите свой сценарий без '.sh' расширением.

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

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

58
ответ дан 22 November 2019 в 23:53

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

Ubuntu 12.04

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

    Step-1

    • Дайте ему имя и изменение, Активированное опцией стимула к НА.
    • Нажмите на Stimulus, выберите категорию Network и введите Подключение к WLAN. Нажать "OK".

    Step 2

    • Можно также выбрать SSID беспроводной сети, и у Вас есть опция того, проверить ли это на запуске.

    Step 3

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

    Step 4

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

    Step-5

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

    Step-6

25
ответ дан 22 November 2019 в 23:53

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

Интерфейсы могут быть найдены в "/etc/network /" каталог под именем файла "интерфейсы"

iface elan0 inet manual
    up filename.sh

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

Удостоверьтесь, что Вы даете выполнить полномочия файлу.

sudo chmod 755 filename.sh
1
ответ дан 22 November 2019 в 23:53

Я отвечу на эту часть вопроса OP: "Я хотел бы иметь это монтирование автоматически"

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

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

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

2
ответ дан 22 November 2019 в 23:53

Насколько я заинтересован, /etc/network/if-up.d/ решение не работало от меня как тогда, когда я добавил к /etc/network/interfaces следующее:

auto wlp58s0
iface wlp58s0 inet dhcp
post-up /home/augustin/Config/myscript.sh

Wi-Fi запустился бы после перезагрузки.

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

#!/bin/bash

IF=$1
STATUS=$2

if [ "$IF" == "wlp58s0" ]
then
    case "$2" in
        up)
        # interface is up
        ;;
        down)
        # interface will be down
        ;;
        pre-up)
        # interface will be up
        ;;
        post-down)
        # interface is down
        ;;
        *)
        ;;
    esac
fi

Я предполагаю, что существуют проблемы между тем, кто управляет сетевой конфигурацией на системном уровне и иногда значении по умолчанию network поведение оставлено позади диспетчер один.

Кроме того, для тех, кто хотел бы - как я - попытаться иметь символьную ссылку на сценарий (чтобы хранить файл в лучшем месте), к сожалению, это не работало на меня.

Надеюсь, это поможет!

1
ответ дан 22 November 2019 в 23:53

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

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

Источники:

1
ответ дан 22 November 2019 в 23:53

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

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