Answers:
将您的脚本添加到中/etc/network/if-up.d/
。命名您的脚本,不带“ .sh”扩展名。
在添加脚本后还要运行chmod +x /etc/network/if-up.d/yourscriptname
以赋予必要的权限。
确保文件中提到了应在打开时触发脚本的网络接口(例如wlan0或eth0)/etc/network/interfaces
。
interfaces
不存在的确切内容。它是auto wlan0
和iface wlan0 inet dhcp
要不然某事?
编者注:Cuttlefish自2012年以来未进行更新,并且不在当前的任何Ubuntu存储库中
打开墨鱼,然后单击New。
我将回答OP问题的这一部分:“我希望自动安装此支架”
我最喜欢的自动挂载网络共享工具是autofs:https : //help.ubuntu.com/community/Autofs
AutoFS是我安装NAS的首选工具-适用于所有笔记本电脑和工作站。
“ autofs是一个用于根据需要自动挂载目录的程序。自动挂载仅在访问它们时挂载,并且在一段时间不活动后才被挂载。因此,自动挂载NFS / Samba共享可以节省带宽并提供更好的性能。与通过fstab进行的静态安装相比,整体性能。 ”
最好,最简单,最简便的方法是将up命令添加到您要使用的接口上。
可以在“ / etc / network /”目录下的文件名“ interfaces”下找到接口
iface elan0 inet manual
up filename.sh
这会将up命令添加到elan0。类似地将其提供给您要使用的任何接口。记住要缩进一个制表符空间。
确保您授予该文件执行权限。
sudo chmod 755 filename.sh
tun0
由管理的VPN接口network-manager
。关键是使用inet manual
。
就我而言,/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
祝好运!我尚未对此进行测试,因此“您的里程可能会有所不同”。
资料来源:
/etc/network/*.d/
您可以使用变量$IFACE
来知道哪个接口正在建立连接,因此,例如,如果是有线连接,则可以跳过该过程。