Da der Download aber mit der neuen GC-API nicht mehr per wget möglich ist, brauch ich dazu Software, die mit der API kommunizieren kann, die fand ich schnell: http://geo.rkkda.com/ - hier das Untertool geo-pqdownload.
Das passende Skript, das die PQ herunter lädt, entpackt und aufs Garmin kopiert, war auch schnell geschrieben; um das ganze hab ich noch ne grafische Oberfläche gepackt, damit ich weiß, dass der Vorgang noch läuft.
Nun soll das Skript immer dann starten, wenn ich mein Garmin an den Laptop anschließe und zwar ohne ein Passwort eingegeben zu müssen. Das stellte mich vor das Problem, dass das Skript so als root und nicht mit dem angemeldeten Benutzer gestartet wird, so dass ich weder Dateiberechtigungen, noch eine grafische Oberfläche bekomme.
Lösungsweg:
1. Als erstes muss man Details zum eingebundenen Gerät einholen. Dabei hilft dieser Befehl:sudo blkid -o list -w /dev/nullBeispiel-Ausgabe:
device fs_type label mount point UUID
--------------------------------------------------------------------------------------------------------------------------
/dev/sda1 vfat /boot/efi 43F4-DFAE
/dev/sda2 ext2 /boot 56acf68d-2c5b-4b69
/dev/sdd vfat GARMIN /media/<user>/GARMIN abcd-1234
UUID=abcd-1234 /media/<user>/GARMIN vfat noauto,users,noatime,rw,sync 0 0
3. Um nun das ganze Skript automatisch auszuführen muss man eine udev-Regel erstellen.
3a) Dazu muss man vorbereitend die Geräteinformationen ermitteln:
lsusbBeispiel-Ausgabe:
Bus 003 Device 006: ID abcd:1234 Garmin International
3b) Detailinformationen zum Gerät ermitteln:
sudo lsusb -vs 003:006
iSerial xxxxxyyyy1234
3c) Nun kann man im Verzeichnis: /etc/udev/rules.d eine neue Regel erstellen, z.B.: Garmin.rules
KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="xxxxxyyyy1234", SYMLINK+="GARMIN", ACTION=="add", RUN+="/home/<user>/Skripte/UpdatePQ_Helper.sh"Wobei hier ein Gerät mit
- Kernel-Einhängepunkt: /dev/sd?1
- vom Typ: USB
- mit der Seriennummer: xxxxxyyyy1234
- Dateisystem-Einhängepunkt: GARMIN
- Aktion: Hinzufühen (ADD)
gesucht wird. Sind alle Bedingungen erfüllt wird mit RUN das angegebene Skript gestartet - bei mir ein Hilfsskript.
4. Skriptaufruf
Ein Direktaufruf des Skripts ist nicht möglich, da so die grafische Oberfläche nicht sichtbar ist und wie o.e. nur mit root-Rechten ausgeführt wird.
Im Hilfsskript ist der Inhalt hier nur:
Der zweite Teil lässt das eigentliche Skript mit einem bestimmten Benutzer ausführen.
Das Hilfsskript und das eigentliche Skript müssen noch ausführbar gemacht werden:
5. Gerät anschließen
Schließt man nun das Gerät an, wird dieses automatisch eingehängt, das Skript gestartet und am Ende wieder ausgehängt.
Färtsch.
P.S. Um das alles herauszufinden, war doch ein wenig Google-Hilfe nötig, daher auch der Blogeintrag, sonst muss ich das wieder alles einzeln ermitteln, wenn ich mein System das nächste Mal neu aufsetze.
#!/bin/bashDISPLAY=:0 LANG=de_DE.UTF-8 braucht man zwingend für die grafische Oberfläche.
#UpdatePQ_Helper.sh
DISPLAY=:0 LANG=de_DE.UTF-8 su -c /home/<user>/Skripte/UpdatePQ.sh <user>
Der zweite Teil lässt das eigentliche Skript mit einem bestimmten Benutzer ausführen.
Das Hilfsskript und das eigentliche Skript müssen noch ausführbar gemacht werden:
chmod a+x ~/Skripte/UpdatePQ.sh ~/Skripte/UpdatePQ_Helper.sh
5. Gerät anschließen
Schließt man nun das Gerät an, wird dieses automatisch eingehängt, das Skript gestartet und am Ende wieder ausgehängt.
Färtsch.
P.S. Um das alles herauszufinden, war doch ein wenig Google-Hilfe nötig, daher auch der Blogeintrag, sonst muss ich das wieder alles einzeln ermitteln, wenn ich mein System das nächste Mal neu aufsetze.
Keine Kommentare:
Kommentar veröffentlichen