Hallo zusammen!
Ich freue mich über jede Hilfe bei folgendem Problem:
Eine udev-Regel (angelegt in /etc/udev/rules.d) soll das Einstecken eines USB-Sticks automatisch erkennen und dann ein Script ausführen. Dabei sollen unterschiedliche USB-Sticks erkannt werden, solange der Name der zu extrahierenden Datei spezifisch ist.
udev-Regel:
KERNEL!="sd[a-z]*", GOTO="script_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="script_end"
ACTION=="add", RUN+="/etc/udev/scripts/start-move-usb-data.sh"
LABEL="script_end"
Script "start-move-usb-data.sh" bereitet den USB-Stick und das Verzeichnis vor:
#!/bin/bash
echo $0: $ID_FS_LABEL>>/tmp/script.log
if [ -z "$ID_FS_LABEL" ]
then
exit 0
fi
mkdir -p /media/pi/$ID_FS_LABEL
echo mount /dev/disk/by-label/$ID_FS_LABEL /media/pi/$ID_FS_LABEL
echo mount /dev/disk/by-label/$ID_FS_LABEL /media/pi/$ID_FS_LABEL | at now
echo /home/pi/data/move-usb-data.sh $ID_FS_LABEL | at now
In der Log-Datei wird $ID_FS_LABEL nicht geschrieben!
Script "move-usb-data.sh" führt das Extrahieren der ZIP-Datei durch:
#!/bin/bash
# Warten bis der USB-Stick gemounted wurde
echo "`date` $0: script start" >> /tmp/script.log
break=0
for seconds in $(seq 0 60); do
sleep 1
# Auf dem usb stick muss die Datei 'data.zip' vorhanden sein
if test -f "/media/pi/$1/data.zip"; then
mkdir /tmp/data
unzip -j "/media/pi/$1/data.zip" -d /tmp/data/
rm -f "/home/pi/data/data-import/*"
mv /tmp/data/*.dat "/home/pi/data/data-import/"
rm -rf /tmp/data/
echo "`date` copied data.zip" >> /tmp/script.log
echo "`date` $0: script stop `date`" >> /tmp/dise.log
Display More
Wenn ich ich in diesem Script "$1" in den tatsächlichen Verzeichnisnamen des USB-Sticks ändere, kann ich das Script erfolgreich manuell starten.
Es scheint, dass der Pfad des USB-Sticks Probleme macht. Das Mounten des USB-Sticks gelingt aber automatisch unter sda1.
Danke für eure Tipps!
Viele Grüße