PDA

Visualizza la versione completa : Esegurie comandi quando si verificano eventi hardware


/dev/null
02-01-2007, 02:23
Ho la necessita' di eseguire dei comandi quando si verificano alcuni eventi...
Ad esempio voglio tirare giu' l'interfaccia di rete wireless e tirare su quella ethernet quando viene attaccato il cavo ethernet (basta un ifdown e un ifup), e fare la cosa opposta quando il cavo ethernet se ne va, poi vorrei sostituire /dev/dsp con /dev/dsp1 quando attacco la scheda audio esterna (e' l'unico modo che ho trovato per usare OSS), inoltre mi garberebbe lanciare camserv in automatico quando attacco la webcam e vedo che piu' passa il tempo e piu' ho bisogno di abbinare dei comandi ad eventi hardware (tutta colpa dell'USB :mame: )...

Ho provato a dare un occhiata ad ACPI, ma non penso possa gestire questi eventi, e sicuramente non ho trovato come farlo.
Come ultima soluzione mi potrei fare uno script che ogni due secondi lancia il comando dmesg e ne scanna l'output alla ricerca di qualcuno degli eventi a cui sono interessato, ma preferirei qualcosa di piu' pulito e piu' semplice da configurare...

Avete qualche consiglio?
Se ci fossero soluzioni distro-dipendenti, sappiate che uso una debian (sid)

nik600
02-01-2007, 11:00
ciao

sicuramente ci sono dei metodi più puliti per farlo, ma un metodo molto semplice potrebbe essere fare il parsig di syslogs, o messages e comportarti di conseguenza.

Oppure potresti farti uno scriptino tipo:

# dmesg | grep EVENTO_USB | wc -l

Ovviamente evento_usb dovrebbe essere una stringa che ti identifica in modo univoco il tuo evento

se quella roba sopra ti ritorna 1 (wc -l è il numero di linee ritornate da grep) allora fai xxx, altrimenti yyy

e via cosi...

/dev/null
04-01-2007, 07:24
Eh, stavo cercando soluzioni che non richiedono di scannare messaggi loggatti (tipo appunto dmesg, syslog, messages etc), perche' cio' richiederebbe troppa "manutenzione" in quanto dovrei scrivermi delle regexp personalizzate per gli eventi a cui sono interessato e potrei doverlo cambiare quando cambiero' kernel o magari anche altre parti del software...
Per ora sto usando un ciclo bash che ogni due secondi lancia dmesg e parsa le ultime righe alla ricerca degli eventi che mi interessano, ma sta soluzione non mi soddisfa troppo: se nel giro di qualche tempo il kernel si mettera' a loggare in maniera diversa questi eventi, mi rimettero' a cercare una soluzione migliore...

PinguinoGoloso
04-01-2007, 11:08
Potresti dare un'occhio a HAL e magari scrivere un programmino che si interfacci al suo demone, in modo da intercettare gli eventi che ti interessano...
Un pò di documentazione qui: http://www.redhat.com/magazine/003jan05/features/hal/ .

Loading