因为我使用的是Bionic Beaver/Ubuntu 18.04,所以 中的网络设置/etc/network/interfaces被忽略,并且 中的设置/etc/NetworkManager/system-connections/'eth0'用于 i) 静态 ip ii) 网关等。
我希望每次界面出现时都重新启动 sshd 服务。/etc/network/interfaces因为我使用的是 Gnome,所以它不能在正常的地方工作。我可以在哪里放置一个每次出现特定接口时运行的 NetworkManager 脚本?
PEd*_*hur 13
解决方案是在/etc/NetworkManager/dispatcher.d. 例如,您可以journald通过将以下脚本放置在以下位置来记录事件/etc/NetworkManager/dispatcher.d/log-iface-events.sh:
#!/usr/bin/env bash
interface=$1
event=$2
echo "$interface received $event" | systemd-cat -p info -t dispatch_script
Run Code Online (Sandbox Code Playgroud)
记得给它执行权限:
chmod +x /etc/NetworkManager/dispatcher.d/log-iface-events.sh
Run Code Online (Sandbox Code Playgroud)
坏消息是脚本不再与给定的界面或事件(例如up或down )绑定。因此,您必须检查脚本中的所有内容。如果您希望此脚本仅针对 运行eth0,则必须手动过滤该脚本,并将类似以下内容的内容放入脚本中:
[[ $interface == "eth0" ]] || return 0
Run Code Online (Sandbox Code Playgroud)
例如:
#!/usr/bin/env bash
interface=$1
event=$2
if [[ $interface != "eth0" ]] || [[ $event != "up" ]]
then
return 0
fi
# place your commands bellow this line
Run Code Online (Sandbox Code Playgroud)
仅当它正在处理接口up事件时才会运行eth0。
您可以有很多脚本。根据man 8 networkmanager,脚本将按字母顺序运行。这似乎包括子目录中的脚本。您必须阅读此联机帮助页。
| 归档时间: |
|
| 查看次数: |
17064 次 |
| 最近记录: |