Очень не хотелось бы привязываться к dmesg, т.к как я понимаю она хранит все манипуляции с начала загрузки системы, соответственно могут возникнуть неоднозначные ситуации(если учесть что все-таки скрипт будет обрабатывать dmesg)
Пользователь решил продолжить мысль 17 Августа 2009, 07:49:35:
нашел почти что нужно:
udevadm info --query=all --name=/dev/sdb
P: /devices/pci0000:00/0000:00:13.5/usb1/1-4/1-4:1.0/host8/target8:0:0/8:0:0:0/block/sdb
N: sdb
W:58
S: block/8:16
S: disk/by-id/usb-JetFlash_Transcend_4GB_LEKMZH2J-0:0
S: disk/by-path/pci-0000:00:13.5-usb-0:4:1.0-scsi-0:0:0:0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:13.5/usb1/1-4/1-4:1.0/host8/target8:0:0/8:0:0:0/block/sdb
E: MAJOR=8
E: MINOR=16
E: DEVTYPE=disk
E: DEVNAME=/dev/sdb
E: ID_VENDOR=JetFlash
E: ID_VENDOR_ENC=JetFlash
E: ID_VENDOR_ID=058f
E: ID_MODEL=Transcend_4GB
E: ID_MODEL_ENC=Transcend\x204GB\x20\x20\x20
E: ID_MODEL_ID=6387
E: ID_REVISION=8.07
E: ID_SERIAL=JetFlash_Transcend_4GB_LEKMZH2J-0:0
E: ID_SERIAL_SHORT=LEKMZH2J
E: ID_TYPE=disk
E: ID_INSTANCE=0:0
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=usb-storage
E: ID_PATH=pci-0000:00:13.5-usb-0:4:1.0-scsi-0:0:0:0
E: DEVLINKS=/dev/block/8:16 /dev/disk/by-id/usb-JetFlash_Transcend_4GB_LEKMZH2J-0:0 /dev/disk/by-path/pci-0000:00:13.5-usb-0:4:1.0-scsi-0:0:0:0
Как и надо было, по ID_VENDOR=JetFlash и ID_MODEL=Transcend_4GB пожно получить N: sdb.
Останавливает только то что нужно переберать все устройства в системе и то что для freebsd есть более удобный способ:
usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000),
VIA(0x0000), rev 1,00
port 1 addr 2: full speed, self powered, config 1, Palm
Handheld(0x0060), Palm, Inc.(0x0830), rev 1,00
port 2 powered
Подобной программки в linux не нашел, может кто подскажет.