Udev 不运行内联脚本

Udev 不运行内联脚本

因此,我目前正在尝试在udev连接特定 USB wifi 网卡后执行某些操作(启动 airmon-ng)。但我无法让内联脚本正常工作。可以使用以下简单示例重现此问题:

创建以下可执行脚本/test.sh

#!/bin/sh
echo hello > /tmp/test.txt

创建以下文件/etc/udev/rules.d/85-auto-monitor.rules

# This works:
ACTION=="move", KERNEL=="wlx8416f91a5ed3", RUN+="/test.sh"

# This does not work:
# ACTION=="move", KERNEL=="wlx8416f91a5ed3", RUN+="sh -c 'echo hello > /tmp/test.txt'"

使用以下命令重新加载文件.rules

sudo udevadm control --reload 

我就是不明白为什么外部脚本可以工作,而内联脚本却不行。如果我在终端中运行内联脚本,它就可以工作。

答案1

man 7 udev

跑步{类型}

  将程序添加到处理特定事件的所有规则后要执行的程序列表中,具体取决于“类型”

“程序”

   执行指定为分配值的外部程序。如果没有给出绝对路径,则程序应该位于 /usr/lib/udev 中;否则,必须指定绝对路径。

   如果没有指定类型,则这是默认值。

“内置”

   作为程序,但使用内置程序之一而不是外部程序。

因此,在您的示例中,您必须使用绝对路径,sh如 Alex P。提及
RUN+="/bin/sh -c 'echo hello > /tmp/test.txt'"

相关内容