【发布时间】:2016-06-21 14:36:56
【问题描述】:
我有一个脚本,它使用命令 udevadm 来获取有关 /dev 设备的信息,我的脚本所需的信息是 ID_SERIAL 值,因为我想过滤代表特定产品的 tty's 设备连接到 USB 端口。问题是,环境中存在的 udevm 的 udevadm 版本是 128,而这个版本的 udevadm 没有可用的查询 property。如何以其他方式过滤连接在 USB 端口上的设备?
编辑 1 Command.sh
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev);do
(syspath="${sysdevpath%/dev}";
echo "syspath = $syspath";
devname="$(udevadm info -q name -p $syspath)";
[[ "$devname" == "bus/"* ]]&& continue;
echo "Passou";
eval "$(udevadm info -q property --export -p $syspath)";
[[ -z "$ID_SERIAL" ]] && continue;
temporario=${ID_SERIAL,,};
if [[ $temporario == *"ManufacturerName"* ]];
then
echo "/dev/$devname";
fi);
done;
【问题讨论】:
-
我认为您无法在您的环境中更新 udev 是否正确?
-
如果您无法让
udevadm准确过滤您想要的方式,也许您可以使用其他工具,例如grep、sed或awk来进一步过滤来自的输出udevadm. -
无法更新环境。
-
编辑您的 Q 以包含您的
udevadmcmd 的小样本输出。这假定ID_SERIAL值在该输出中。如果不是,那么您需要找到另一个可以返回该值的工具。祝你好运。