![Fedora 替代 post-up 命令](https://linux22.com/image/66951/Fedora%20%E6%9B%BF%E4%BB%A3%20post-up%20%E5%91%BD%E4%BB%A4.png)
Fedora 是否支持类似的东西张贴命令 (就像在Ubuntu中一样)或者这个命令还有其他选择吗?
我想在激活网络接口后运行自定义脚本,但我不知道如何在 Fedora 中管理它。
post-up command Run command after bringing the interface up. If this command fails then ifup aborts, refraining from marking the interface as configured (even though it has really been configured), prints an error message, and exits with status 0. This behavior may change in the future.
答案1
一种想法是将脚本放入此目录中:/etc/NetworkManager/dispatcher.d
.当各种网络事件发生时,NetworkManager将按字母顺序运行脚本。
NetworkManager 将按字母顺序执行 /etc/NetworkManager/dispatcher.d 目录中的脚本以响应网络事件。每个脚本应该是 (a) 常规文件,(b) 由 root 拥有,(c) 不可由组或其他人写入,(d) 不可设置 uid,(e) 且可由所有者执行。每个脚本接收两个参数,第一个是刚刚激活的设备的接口名称,第二个是操作。
根据手册页,有以下“事件”:up、down、vpn-up、vpn-down、主机名、dhcp4-change 和 dhcp6-change。
我怀疑你可以使用“向上”事件做你想做的事。这篇博文的标题是:“使用 NetworkManager 根据网络位置启动脚本”,展示了如何构建一个 shell 脚本以在接口 (eth0) 启动时运行。
例如(从该博客文章“借用”的代码):
#!/bin/sh
IF=$1
STATUS=$2
USER=justintime
wait_for_process() {
PNAME=$1
PID=`/usr/bin/pgrep $PNAME`
while [ -z "$PID" ]; do
sleep 3;
PID=`/usr/bin/pgrep $PNAME`
done
}
start_synergy() {
wait_for_process nm-applet
/bin/su $USER -c "/usr/bin/synergyc $1"
}
if [ "$IF" = "eth0" ] && [ "$STATUS" = "up" ]; then
#LAN Subnet at work
NETMASK="10.0.0.0/8"
if [ -n "`/sbin/ip addr show $IF to $NETMASK`" ]; then
ARGS="jentoo.bucklehq.com"
start_synergy $ARGS
exit $?
fi
fi
这个例子应该足以让您开始做您想做的事情。