2014-01-24 44 views
0

我有一个bash脚本,它接受一个KERNEL设备名称作为参数,并输出一个可用作新KERNEL设备名称的新字符串。使用udev规则操作内核设备名称

Example: 
bash myScript sda 
output: sdaa 

我为此使用自定义udev规则。

我不知道如何将参数传递到bash脚本中,并使用udev规则捕获结果输出。

这里有一些我已经试过了规则,

KERNEL=="sda", RUN+="/bin/bash /etc/udev/myScript '%E{KERNEL}'", NAME="%c" 

KERNEL=="sda", IMPORT{program}="/bin/bash /etc/udev/myScript --export %k", NAME="%c" 

KERNEL=="sda", IMPORT{program}="/bin/bash /etc/udev/myScript --import %k --export %c", NAME="%c" 

我使用回声输出我的字符串到标准输出。

+0

取消了对服务器故障 – user2887201

回答

0

设备属性可以通过设备属性(%k - 设备内核名称,%p - 设备的devpath)传递给脚本。你可以参考udev的手册页,了解所有可用的设备属性。

通过“%c”使shell脚本的std输出可用于udev规则。 。

如何对这条规则:

KERNEL=="sda", RUN+="/bin/bash /etc/udev/myScript %k", NAME="%c" 
+0

重复的问题,这也不起作用。/dev/sda不再出现在/ dev /下。这意味着脚本的某些部分会执行一些工作,但不会创建/ dev/sdaa。我的脚本很简单,只包含一行,echo'echo $ 1 | sed“s/$ {1:2:1}/$ {1:2:1} $ {1:2:1} /”' – user2887201

+0

检查您是否可以通过更改udev的日志级别来查找任何有用的日志。 udevadm control --log-priority = debug – neon

+0

最初,只是从脚本输出一些常量,看它是否更改设备名称。 – neon