J'avais pas assez creusé, en changeant 'tty' pas 'usb', j'obtiens ceci en
insérant/retirant ma clé :
$ udevadm monitor -u -s usb
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
UDEV [320663.780360] add /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1
(usb)
UDEV [320663.802061] add
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0 (usb)
UDEV [320663.829537] bind
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0 (usb)
UDEV [320663.849983] bind /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1
(usb)
UDEV [320671.587192] unbind
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0 (usb)
UDEV [320671.596726] remove
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0 (usb)
UDEV [320671.606377] unbind /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1
(usb)
UDEV [320671.627045] remove /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1
(usb)
Merci pour le retour !
Le 10/11/2023 à 11:02, Edgar Bonet a écrit :
> Bonjour !
>
> Raphaël Dorado a écrit :
>> udevadm monitor \
>> | egrep --line-buffered "UDEV.+sdd1" \
>> | while $(true)
>> do
>> read event
>> event=$(echo "$event" | cut -d' ' -f4 )
>> echo $event
>> done
>>
>> $event est 'add' quand j'insère la clé
>> $event est 'remove' quand je retire la clé
>
> Tiens, intéressant ! De mon côté, je ne peux pas grepper le nom complet
> du device, car il change à l'occasion (ttyUSB0 ou ttyUSB1). Mais je vois
> que je peux demander à udevadm de ne me montrer que les événements UDEV
> du sous-système tty. J'ai fait un essai en branchant un câble FTDI (vu
> comme /dev/ttyUSB0), en ouvrant le port en écriture, et en tapant
>
> udevadm monitor -u -s tty
>
> Quand je débranche et rebranche le câble, je vois ceci :
>
> UDEV [344267.700283] remove /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.3/1-5.3:1.0/ttyUSB0/tty/ttyUSB0 (tty)
> UDEV [344270.921765] add /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.3/1-5.3:1.0/ttyUSB1/tty/ttyUSB1 (tty)
>
> Je crois que je vais essayer de me baser sur ça. Ci-dessous la version
> préliminaire du script que je vais essayer.
>
> Merci !
>
> Edgar.
>
> -- 8< ------------------------------------------------------------------
> #!/bin/bash
>
> port_id=usb-FTDI_UM232R_USB__-__Serial_A156DVPL-if00-port0
> port=/dev/serial/by-id/$port_id
> nc_pid="" # PID of netcat
>
> # Start the netcat process and record its PID.
> start_netcat() {
> stty -F $port raw -echo 115200
> nc -k -n -l -p 1234 < $port > $port &
> nc_pid=$!
> }
>
> # Start or stop netcat, as required.
> refresh() {
> # Start netcat when the port shows up.
> if [ -e "$port" ]; then
> if [ -n "$nc_pid" ]; then
> echo "killing netcat (unexpectedly alive)"
> kill $nc_pid
> fi
> echo "starting netcat"
> start_netcat
> fi
>
> # Stop netcat if it is running and the port vanishes.
> if [ ! -e "$port" -a -n "$nc_pid" ]; then
> echo "stopping netcat"
> kill $nc_pid
> nc_pid=""
> fi
> }
>
> # Initial setup, in case the port is already here.
> refresh
>
> # Watch for udev adding or removing ttys.
> udevadm monitor -u -s tty | grep --line-buffered '(tty)' | \
> while true; do
> read line # read and discard
> refresh
> done
>