key PROGRAM in udev e fallimento della regola associata
Inviato: sab 3 mar 2007, 18:27
ciao,
dato che mi ero rotto di scrivere tutte le volte una regola specifica per ogni storage usb che dovevo attaccare al pc ho deciso di usare la direttiva PROGRAM di udev così da creare in maniera dinamica il device name persistente associato ad ogni dispositivo. ora però è successo un fatto strano. ho fatto un abbozzo di script ed ho scritto una regola associata per udev. lo script è il seguente:
la regola di udev è la seguente:
ho provato a testare la regola con udevtest. ho inserito la mia pennina (vista come sda) ed ho digitato il comando con il seguente output:
in sostanza secondo udevtest la regola funziona alla perfezione. il fatto è che non viene creato nessun device... e dato che udevtest non mi da errori non so che pesci pigliare.
qualcuno ha mai provato la cosa?
grazie,
M
dato che mi ero rotto di scrivere tutte le volte una regola specifica per ogni storage usb che dovevo attaccare al pc ho deciso di usare la direttiva PROGRAM di udev così da creare in maniera dinamica il device name persistente associato ad ogni dispositivo. ora però è successo un fatto strano. ho fatto un abbozzo di script ed ho scritto una regola associata per udev. lo script è il seguente:
Codice: Seleziona tutto
#!/bin/sh
#the following code gets kernel name for the device (provided by udev) and retrive vendor and model strings to create a persistent explanatory device name. actually the code works only for usb mass storages.
ECHO=echo
UDEVINFO=$(which udevinfo)
[ $UDEVINFO = "which" ] && { $ECHO "unable to locate udevinfo. creation failed"; exit 1;}
#run udevinfo
VENDOR=$($UDEVINFO -a -p /sys/block/$1/ | grep -m1 "SYSFS{vendor}" | cut -f2 -d \" | awk '{printf $1}')
[ $VENDOR = "" ] && VENDOR="unk"
MODEL=$($UDEVINFO -a -p /sys/block/$1/ | grep -m1 "SYSFS{model}" | cut -f2 -d \" | awk '{printf $1}')
[ $VENDOR = "" ] && VENDOR="unk"
echo "$VENDOR-$MODEL"
Codice: Seleziona tutto
#usb pen
BUS=="scsi", KERNEL=="sd*", PROGRAM="/home/utente/slack/scripting/rc.udev.ruler %k", NAME="%c"
Codice: Seleziona tutto
bash-3.1# udevtest /block/sda
main: looking at device '/block/sda' from subsystem 'block'
run_program: '/home/utente/slack/scripting/rc.udev.ruler sda'
run_program: '/home/utente/slack/scripting/rc.udev.ruler' (stdout) 'LEXAR-JUMPDRIVE'
run_program: '/home/utente/slack/scripting/rc.udev.ruler' returned with status 0
udev_rules_get_name: rule applied, 'sda' becomes 'LEXAR-JUMPDRIVE'
run_program: '/lib/udev/usb_id -x'
run_program: '/lib/udev/usb_id' (stdout) 'ID_VENDOR=LEXAR'
run_program: '/lib/udev/usb_id' (stdout) 'ID_MODEL=JUMPDRIVE_SPORT'
run_program: '/lib/udev/usb_id' (stdout) 'ID_REVISION=3000'
run_program: '/lib/udev/usb_id' (stdout) 'ID_SERIAL=LEXAR_JUMPDRIVE_SPORT_1069A701042634271105'
run_program: '/lib/udev/usb_id' (stdout) 'ID_TYPE=disk'
run_program: '/lib/udev/usb_id' (stdout) 'ID_BUS=usb'
run_program: '/lib/udev/usb_id' returned with status 0
udev_rules_get_name: add symlink 'disk/by-id/usb-LEXAR_JUMPDRIVE_SPORT_1069A701042634271105'
run_program: '/lib/udev/path_id /block/sda'
run_program: '/lib/udev/path_id' (stdout) 'ID_PATH=pci-0000:00:1d.7-usb-0:8:1.0-scsi-0:0:0:0'
run_program: '/lib/udev/path_id' returned with status 0
udev_rules_get_name: add symlink 'disk/by-path/pci-0000:00:1d.7-usb-0:8:1.0-scsi-0:0:0:0'
udev_device_event: device '/block/sda' already in database, validate currently present symlinks
udev_node_add: creating device node '/dev/LEXAR-JUMPDRIVE', major = '8', minor = '0', mode = '0660', uid = '0', gid = '6'
udev_node_add: creating symlink '/dev/disk/by-id/usb-LEXAR_JUMPDRIVE_SPORT_1069A701042634271105' to '../../LEXAR-JUMPDRIVE'
udev_node_add: creating symlink '/dev/disk/by-path/pci-0000:00:1d.7-usb-0:8:1.0-scsi-0:0:0:0' to '../../LEXAR-JUMPDRIVE'
main: run: 'socket:/org/kernel/udev/monitor'
qualcuno ha mai provato la cosa?
grazie,
M