Quiosco autoformat pendrives
Requisitos
- Herramientas para formatear en exfat
- Scripts
- udev_monitor.py https://github.com/netinvent/udev_monitor
- format_dev_exfat.sh
Instalación
Instalación de herramientas para formatear en exfat desde la shell.
apt install -y exfatprogs beep
Descarga del monitor de dispositivos que notificará cuando un dispositivo ha sido conectado.
cd /root
git clone https://github.com/netinvent/udev_monitor.git
pip install -r udev_monitor/udev_monitor/requirements.txt
cd udev_monitor
Introduzca un pendrive con alguna partición en el sistema y obtenga el VID y PID del dispositivo
root@raspberrypi:~/udev_monitor# lsusb
Bus 001 Device 012: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
En este ejemplo el pendrive tiene un VID (VendorID - Fabricante) 0930 y un PID (Product ID - Producto) 6545. Ejecute el script pasando por parametro ambos valores vid:pid
root@raspberrypi:~/udev_monitor# ./format_dev_exfat.sh 0930:6545
Detectada particion con identificador sda1
Detectada particion con identificador sda2
Detectada particion con identificador sda3
Si no quieres que se borre el contenido retira YA! el dispositivo!!!!
Se inicia el formateo del dispositivo a formato EXTFAT en 5 segundos
------------------------------------------------
Formateando particion sda1
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda1, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
------------------------------------------------
Formateando particion sda2
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda2, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
------------------------------------------------
Formateando particion sda3
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda3, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
YA PUEDE RETIRAR EL DISPOSITIVO
Si todo ha funcionado correctamente, lance el monitor indicandole la ruta del script de formateo
python3 udev_monitor/udev_monitor.py -u add -f usb -a /root/scripts/format_dev_exfat.sh
Conecte un pendrive y compruebe que se formatea correctamente.
Instalación como servicio
Cree el fichero de configuración con los filtros y parámetros deseados
mkdir /etc/udev_monitor
cat << EOF > /etc/udev_monitor/udev_monitor1.conf
[UDEV_MONITOR]
filters = usb
action = /root/scripts/format_dev_exfat.sh
udev_events = addouou
timeout = 3600
EOF
A continuación copie los scripts de Python necesarios a las carpetas del sistema
cp /root/udev_monitor/udev_monitor.py /usr/local/bin/ -v
cp /root/udev_monitor/scripts/udev_monitor@.service /etc/systemd/system/ -v
systemctl daemon-reload
systemctl enable --now udev_monitor@udev_monitor1.conf
Pruebas
Desconecte el USB y en otro equipo prepare las particiones en una unidad flash usb
Introduzca datos en cada una de las particiones
Desconecte la unidad del portátil y conectela en el quiosco. Espere a que el proceso del quiosco la detecte y lance el script de formateado.
2023-02-05 12:39:23,674 :: INFO :: PID: 31784 :: Device 0930:6545 added as /dev/bus/usb/001/011
2023-02-05 12:39:25,678 :: INFO :: PID: 31784 :: Executing comamnd ./format_dev_exfat.sh 0930:6545
2023-02-05 12:39:26,427 :: INFO :: PID: 31784 :: Device 0930:6545 added as /dev/sda
2023-02-05 12:39:26,810 :: INFO :: PID: 31784 :: Device 0930:6545 added as /dev/sda3
2023-02-05 12:39:26,817 :: INFO :: PID: 31784 :: Device 0930:6545 added as /dev/sda2
2023-02-05 12:39:26,822 :: INFO :: PID: 31784 :: Device 0930:6545 added as /dev/sda1
2023-02-05 12:39:28,432 :: INFO :: PID: 31784 :: Executing comamnd ./format_dev_exfat.sh 0930:6545
2023-02-05 12:39:30,727 :: INFO :: PID: 31784 :: Command executed succesfully. Output was:
2023-02-05 12:39:30,729 :: INFO :: PID: 31784 :: Si no quieres que se borre el contenido retira YA! el dispositivo!!!!
Se inicia el formateo del dispositivo a formato EXTFAT en 5 segundos
2023-02-05 12:39:35,841 :: INFO :: PID: 31784 :: Command executed succesfully. Output was:
2023-02-05 12:39:35,842 :: INFO :: PID: 31784 :: Detectada particion con identificador sda1
Detectada particion con identificador sda2
Detectada particion con identificador sda3
Si no quieres que se borre el contenido retira YA! el dispositivo!!!!
Se inicia el formateo del dispositivo a formato EXTFAT en 5 segundos
Formateando particion sda1
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda1, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
Formateando particion sda2
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda2, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
Formateando particion sda3
------------------------------------------------
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sda3, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
------------------------------------------------
Como puede ver en el listado , se han borrado las tres particiones. Se han formateado como exFAT. Desconecte el dispositivo y compruebe en equipo portátil que los datos concuerdan.