【发布时间】:2024-04-23 17:55:01
【问题描述】:
根据信息,里面的任何文件
/etc/NetworkManager/dispatcher.d/
假设从
接收两个可能的命令NetworkManager
要找出这些命令可能是什么,我们只需
查看其中一个脚本的来源
/etc/NetworkManager/dispatcher.d/
那么让我们这样做吧。
cd /etc/NetworkManager/dispatcher.d/
ls
00-netreport 05-netfs 10-dhclient
vi 00*
这里什么都没有。
gedit 05*
很好。
#!/bin/sh
export LC_ALL=C
if [ "$2" = "down" ]; then
/sbin/ip route ls | grep -q ^default || {
[ -f /var/lock/subsys/netfs ] && /etc/rc.d/init.d/netfs stop || :
} && { :; }
fi
if [ "$2" = "up" ]; then
/sbin/ip -o route show dev "$1" | grep -q '^default' && {
/sbin/chkconfig netfs && /etc/rc.d/init.d/netfs start || :
} || { :; }
fi
让我们复制它并创建一个名为
的文件 test
让我们只使用我们需要的“up”。
file: test
#!/bin/sh
export LC_ALL=C
if [ "$2" = "up" ]; then
/sbin/ip -o route show dev "$1" | grep -q '^default' && {
/sbin/chkconfig netfs && /etc/rc.d/init.d/netfs start || :
} || { :; }
fi
让我们对其进行修改,以便它可以“可视化”执行一些我们可以对其进行测试的东西。
#!/bin/sh
export LC_ALL=C
if [ "$2" = "up" ]; then
gedit test.txt
fi
结果:
Not Working.
让我们以某种方式对其进行修改,以便它可以理解。
#!/bin/sh
export LC_ALL=C
if [ "$2" = "up" ]; then
/sbin/ip -o route show dev "$1" | grep -q '^default' && {
gedit test.txt || :
} || { :; }
fi
正在重新启动..
结果:
nothing
已解决:
这是所选答案中可能的最小代码:
(我能够创建)
case "$2" in
up)
touch /root/Desktop/ooo
;;
esac
我需要让它更小,因为我经常重新格式化我的机器,然后运行一个脚本来自动设置这些东西。所以以后我只会跑
cat >> /etc/NetworkManager/dispatcher.d/test << EOF
case "\$2" in
up)
touch /root/Desktop/ooo
;;
esac
EOF
chmod +x /etc/NetworkManager/dispatcher.d/test
换句话说,$ 必须用“cat>>”转义。
【问题讨论】:
-
您可以尝试使用更安全的命令来测试它吗?例如:
cd ~/Desktop && touch 'I AM HERE.txt' -
(不是
gedit test.txt,我的意思是。我不确定您是否可以简单地运行它并期望弹出一个带有gedit的新终端) -
我认为我需要的是
gnome-terminal -e "gedit test.txt",但我无法让它与“-hold”和“sleep”添加一起工作。 -
是的,您可能是对的,但是您能否让
dispatcher.d脚本运行任何东西,就像我上面给出的简单的桌面上创建文件示例一样?从上面的代码中,很难判断到底是什么失败了。在 NetworkManager 启动时获得一些简单的运行,然后在此基础上进行构建。 -
我实际上不能,我有点混淆了问题等等,发生的事情是我可以让“
gnome-terminal -e "gedit test.txt"”在/etc/rc.d/rc.local内部工作,但不能暂停 8 秒。就这个问题而言,不,我无法在/etc/NetworkManager/dispatcher.d/内执行任何操作@