31.5.18

Bash - aktuellen Pfad herausfinden

## Aktuellen Pfad des Scripts herausfinden
Location="$(dirname "$(readlink -e "$0")")"


Bei Qnap mit Entware:
Location=$(/opt/bin/dirname $(/opt/bin/readlink -e "$0"))

Snippet, um Bilddaten aus einer Kameraüberwachung nach Datum abzulegen

checkfile()
{

    ## Datum holen  => 2018:05:15 19:01:26+02:00
    newdate=$(exiftool -T "-FileModifyDate" "$1") # | tr -d ':' | tr ' ' '_' | cut -d '+' -f 1)
    year=$(echo "$newdate" | cut -d ":" -f 1)
# Jahr, Monat und Tag holen => 2018-05-26
    yearandmonth=$(echo "$newdate" | awk -F ":" '{ print $1 "-" $2 "-" $3 }' | cut -d ' ' -f 1)
    newname=$(echo "$newdate" | tr -d ':' | tr -d ' ' | cut -d '+' -f 1 )
# Das entsprechende Unterverzeichnis anlegen  
mkdir -p "$year/$yearandmonth"
## Bilder verschieben
    mv "$1" "$SRCDIR/$year/$yearandmonth/${newname}_terrasse_move.jpg"

}


find $SRCDIR_TERRASSE -maxdepth 2 -iname '*.jpg' | while read file; do checkfile "$file";done

Ergebnis:
Verschieben zu 2018/2018-05-26/20180526122404_terrasse_move.jpg


Einzeiler, um Bilder anhand der Exif-Daten umzubenennen:

exiftool -d %Y-%m-%d_%H%M%S".jpg" "-filename<datetimeoriginal" "-filemodifydate<datetimeoriginal#" -ext jpg images/

Besser (bei mehreren zeitgleich aufgenommenen Bildern)
exiftool -d '%Y%m%d-%H%M%S%-02.c.%%e' '-filename<CreateDate'

Einzeiler, um Bildern aus einem Ordner ein Datum zuzuweisen
exiftool -m -overwrite_original "-AllDates=1990:01:01 12:00:00" -r -if '($filetype eq "JPEG")' .
-m ignoriert Fehlermeldungen, bei mir:
"Bad MakerNotes offset for Unknown_......"
 -overwrite_original Original wird überschrieben

3.5.18

Android SD-Karte unter Linux Shell ansprechen

Wenn man z.B. ein Linux System unter Virtualbox auf einem Windows-Hostsystem laufen hat, kann man wie üblich USB Geräte durchreichen.

Das funktioniert auch bei vielen Android Handys.
In der Ansicht des Dateimanagers erhält man dann z.B. ein Android-Gerät, über das man auf den dortigen Speicher zugreifen kann.

Wie aber kann ich dann ein rsync veranlassen?

Lösung:
Wenn auf das Android Gerät geklickt wird, sieht man z.B. "Interner gemeinsamer Speicher". Per Klick and Drop auf ein Terminal schieben und man sieht den kompletten Pfad, den man auch über die Kommandozeile ansprechen kann.

So kann es aussehen:

'/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C004%5D/Interner gemeinsamer Speicher'


Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können. ...