也一样
我有bash脚本,它将内核设备名称作为参数,并输出一个可以用作新内核设备名称的新字符串。
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"
我使用回声将字符串输出到标准输出。
设备属性可以通过设备属性(%k-设备内核名称,%p-设备的DevPath)传递给脚本。您可以在所有可用的设备属性中参考UDEV的手册页。
Shell脚本的和STD输出可通过"%c"提供给UDEV规则。。
此规则如何:
KERNEL=="sda", RUN+="/bin/bash /etc/udev/myScript %k", NAME="%c"
无法更改设备节点的名称。只能创建其他符号链接。
如果将值分配给NAME
键,则只能更改网络接口的名称。
请参阅Systemd UDEV文档。旧的独立udevd