我需要将一个bash脚本移植到udev,该脚本使用不推荐的HAL工具(如hal-get-property或hal-find-by-capability )。硬件说HAL被合并到udev中,但是我找不到关于如何正确地将这个脚本移植到udev的有用信息。
示例:如果我想要一个所有存储硬件的列表(使用HAL),我可以运行
hal-find-by-capability --capability storage
这将给我一个UDI(唯一设备标识符)的列表,如下所示:
/org/freedesktop/Hal/devices/storage_model_Virtual_disk
/org/freedesktop/Hal/devices/storage_serial_00000000000000000001
/org/freedesktop/Hal/devices/platform_floppy_0_storage
如果我现在想知道/org/freedesktop/Hal/devices/storage_model_Virtual_disk是否是可移动的,我可以发出以下查询
hal-get-property --udi /org/freedesktop/Hal/devices/storage_model_Virtual_disk --key storage.removable
它会回答true或false。
所以我的问题是:
我该怎么做这些事?
sysfsutils (systool)可以工作,但它似乎不是一个合适的替代品。
这适用于udevadm info吗?
发布于 2012-11-08 16:23:26
编辑之后,你要做的事情就清楚多了。首先,您必须找到要查询的设备。最简单的方法就是扫描sysfs。如果要查询特定设备,只需将udev指向sysfs中描述该设备的位置即可。因此,如果您正在寻找sdb,例如,您可以通过/block/sdb或从/dev/block或类似的东西中选择正确的节点。如果您有设备路径,比如$DEVPATH,您可以这样做:
udevadm info --attribute-walk --name=$DEVPATH这将泄漏出许多信息,包括可移动性。如果您将attribute-walk替换为query=property,则会显示另一组信息,但我无法在那里找到可移动性信息。
如果您想对多个设备执行此操作,find和xargs将是您的朋友,这基本上是您的hal-find-by-capability替代品,因为您只需要在sysfs中找到正确的文件夹。
根据您要做的事情,您还可能希望读入udev规则,这允许您在附加设备时触发脚本的执行(通过与--attribute-walk提供的值进行匹配)。您还可以轻松地设置所有权和权限等等。
https://stackoverflow.com/questions/13288299
复制相似问题