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

44

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

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

    
задан jmite 20.02.2013 в 04:48
источник

6 ответов

50

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

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

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

    
ответ дан dedunumax 20.02.2013 в 05:00
источник
25

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

Ubuntu 12.04

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

    • ДайтеемуимяиизменитеопциюActivatedbystimulusнаON.
    • НажмитеСтимул,выберитекатегориюСетьивведитеПодключитьсякWLAN.Нажмите«ОК».

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

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

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

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

ответ дан ignite 20.02.2013 в 05:19
1

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

Интерфейсы можно найти в каталоге «/ etc / network /» под названием «интерфейсы»

iface elan0 inet manual
    up filename.sh

Это добавит команду up в elan0. Simillarly дать это, с каким интерфейсом вы хотите работать. Помните о том, чтобы отступать одно пространство табуляции.

Убедитесь, что вы предоставили разрешения на выполнение для файла.

sudo chmod 755 filename.sh
    
ответ дан Revanth Kumar 11.03.2015 в 07:35
1

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

Мой любимый инструмент для автоматического управления сетевыми ресурсами - autofs: Ссылка

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

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

    
ответ дан RBell 24.06.2016 в 09:10
0

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

Удачи! Я не тестировал это, поэтому «ваш пробег может меняться».

Источники:

ответ дан Rolf 30.03.2018 в 14:39
0

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

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

Wifi начнется после перезагрузки.

Но после некоторой борьбы, от этой ссылки , что работало добавить скрипт в /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 остается за диспетчерским.

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

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

    
ответ дан Augustin Riedinger 28.02.2018 в 13:07