Я часто монтирую удаленный диск с помощью sshfs. Мне бы очень хотелось, чтобы это монтирование было автоматически. Однако, если я смонтирую его в своих сценариях .bashrc или startup, часто происходит сбой, потому что мое беспроводное интернет-соединение еще не создано.
Кто-нибудь знает о простом способе выполнения сценария bash каждый раз соединение выполнено или автоматически монтируется диск sshfs?
Примечание редактора: Cuttlefish не обновлялся с 2012 года и не находится в каких-либо текущих репозиториях Ubuntu
Лучшим, простым и простым способом было бы добавить команду up для того, с каким интерфейсом вы хотите работать.
Интерфейсы можно найти в каталоге «/ etc / network /» в разделе имя файла «interfaces»
iface elan0 inet manual
up filename.sh
Это добавит команду up в elan0. Simillarly дать это, с каким интерфейсом вы хотите работать. Помните о том, чтобы отступать одно пространство табуляции.
Убедитесь, что вы предоставили разрешения на выполнение для файла.
sudo chmod 755 filename.sh
Я отвечу на эту часть вопроса OP: «Мне бы очень хотелось, чтобы это монтирование было автоматически»
Моим любимым инструментом для автоматической настройки общих сетевых ресурсов является autofs: https://help.ubuntu.com/ community / Autofs
AutoFS - мой инструмент выбора для монтирования моего NAS - для всех моих ноутбуков и рабочих станций.
«autofs - это программа для автоматической установки каталогов по мере необходимости. Автомонтирование монтируется только по мере их доступа и размонтируется после периода бездействия. Из-за этого автомонтирование NFS / Акции Samba сохраняют пропускную способность и обеспечивают лучшую общую производительность по сравнению со статическими установками через fstab. »
Насколько мне известно, решение /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 остается за диспетчерским.
Кроме того, для тех, кто например, мне нравится пытаться иметь символическую ссылку на скрипт (чтобы сохранить файл в лучшем месте), к сожалению, это не сработало для меня.
Надеюсь, что это поможет!
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
Удачи! Я не тестировал это, поэтому «ваш пробег может меняться».
Источники:
https://unix.stackexchange.com/questions/126009/cause-a-script -to-execute-after-networking-has-https://unix.stackexchange.com/questions/257888/systemd-wait-for-network-interface-to-be-up-before-running-service [!d5 ]