Renamed log level vars and added some debug messages.

This commit is contained in:
swg
2024-02-17 16:45:30 +01:00
parent cc69f0e624
commit cb774c376b

View File

@@ -6,6 +6,7 @@
## wird in der Zwischenablage abgelegt. ## wird in der Zwischenablage abgelegt.
## Author swg, janeemussja.de, November 2013 ## Author swg, janeemussja.de, November 2013
## letzte Änderungen ## letzte Änderungen
## - Februar 2024, Version 1.08, logger function replaced with bash snipped
## - März 2023, Version 1.07, which_is Funktion repariert ## - März 2023, Version 1.07, which_is Funktion repariert
## - Juni 2021, Version 1.06, Progress bar eingebaut ## - Juni 2021, Version 1.06, Progress bar eingebaut
## - Januar 2021, Version 1.05, Test auf fehlende Software geändert. ## - Januar 2021, Version 1.05, Test auf fehlende Software geändert.
@@ -15,21 +16,42 @@
## MODIFY AND SHARE AS YOU LIKE! ## MODIFY AND SHARE AS YOU LIKE!
# Log levels for messages # Log levels for messages
LLMUTE=0 LLMute=0
LLERROR=1 LLMdtry=1 # mandatory: messages that are always written to the log (except mute)
LLWARNING=2 LLError=2
LLINFO=3 LLWarning=3
LLDEBUG=4 LLInfo=4
# Actual log level of the logger used LLDebug=5
LOGLEVEL=$LLDEBUG ## Actual log level of the logger used
Log_Level=$LLInfo
# Write log of the script ## base name of the logging script.
Log_Name="${0##*/}";
## Write log of the script.
## $1 Loglevel to log the message with.
## $2 message to log.
function logger() { function logger() {
LOGGINGLEVEL=$1; local _logging_level=$1;
LOGMESSAGE=$2; local _log_message=$2;
if [ $LOGLEVEL -ge $LOGGINGLEVEL ]; if [[ $Log_Level -lt $_logging_level ]]; then
then return;
echo ${LOGMESSAGE}; fi
local _now=$($DATE +%Y%m%d_%H:%M:%S);
if [[ $_logging_level -eq $LLInfo ]]; then
_type=" Info:";
elif [[ $_logging_level -eq $LLError ]]; then
_type=" ERROR!";
elif [[ $_logging_level -eq $LLWarning ]]; then
_type=" Warning:";
elif [[ $_logging_level -eq $LLDebug ]]; then
_type=" DEBUG:";
else
_type=":";
fi
printf "$Log_Name ${_now}${_type} ${_log_message}\n" >> $Log_File;
if [[ $Log_Level -eq $LLDebug ]]; then
printf "${_now}${_type} ${_log_message}\n";
fi fi
} }
@@ -47,104 +69,73 @@ exec 3>&-
exec 4>&- exec 4>&-
} }
## Returns the binaries full path if existent.
function which_is() { function which_is() {
declare -n RETVAL=$1; declare -n _ret_val=$1; # declare RETVAL a reference of $1
EXECUTABLE=$2; local _executable=$2;
WITHFULLPATH=$(which ${EXECUTABLE} 2>/dev/null); local _with_full_path=$(which ${_executable} 2>/dev/null);
if [ -x "$WITHFULLPATH" ]; if [ -x "$_with_full_path" ]; then
then _ret_val="$_with_full_path";
RETVAL="$WITHFULLPATH";
return 0; return 0;
else else
RETVAL="$EXECUTABLE not found!"; _ret_val="$_executable not found!";
return 1; return 1;
fi fi
} }
# Was wir am Anfang brauchen # Was wir am Anfang brauchen
PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/global/bin:/global-common/scripts:/usr/sfw/bin:/opt/sfw/bin:/usr/ccs/bin:/usr/xpg4/bin:/opt/SUNWspro/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:/opt/bin PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
## Prüfen der notwendigen Software auf Existenz und Ausführbarkeit
# zenity
which_is MSGDIALOG 'zenity';
if [[ "$?" != "0" ]];
then
echo "$MSGDIALOG not found, aborting";
exit 1;
fi
# imagemagick
which_is CONVERT 'convert';
if [[ "$?" != "0" ]];
then
echo "$CONVERT not found, aborting";
exit 1;
fi
# imagemagick
which_is IMGDISPLAY 'display';
if [[ "$?" != "0" ]];
then
echo "$IMGDISPLAY not found, aborting";
exit 1;
fi
# date
which_is DATE 'date';
if [[ "$?" != "0" ]];
then
echo "$DATE not found, aborting";
exit 1;
fi
# exiftool
which_is EXIFTOOL 'exiftool';
if [[ "$?" != "0" ]];
then
echo "$EXIFTOOL not found, aborting";
exit 1;
fi
# xclip
which_is XCLIP 'xclip';
if [[ "$?" != "0" ]];
then
echo "$XCLIP not found, aborting";
exit 1;
fi
# printf
which_is PRINTF 'printf';
if [[ "$?" != "0" ]];
then
echo "$PRINTF not found, aborting";
exit 1;
fi
# sed
which_is SED 'sed';
if [[ "$?" != "0" ]];
then
echo "$SED not found, aborting";
exit 1;
fi
SCRIPTNAME=$(echo $0 | sed -e 's/.*\///g'); SCRIPTNAME=$(echo $0 | sed -e 's/.*\///g');
VERSION="1.07"; VERSION="1.08";
VERS=1.07;
ME=$(whoami); ME=$(whoami);
TMPPFAD=/tmp; TMPPFAD=/tmp;
MYHOME=$(echo ~); MYHOME=$(echo ~);
USTRICH="_"; USTRICH="_";
## Prüfen der notwendigen Software auf Existenz und Ausführbarkeit
# date
which_is DATE 'date';
if [ $? != 0 ]; then echo "$DATE not found, aborting"; exit 1; fi
## Logfile in nextcloud to have a visible result.
Run_Date=$($DATE +%Y_%m_%d)
Log_File="$MYHOME/${Run_Date}_${Log_Name}.log";
touch $Log_File;
logger $LLInfo "Path: $PATH";
# zenity
which_is MSGDIALOG 'zenity';
if [ $? != 0 ]; then logger $LLError "$MSGDIALOG not found, aborting"; exit 1; fi
# imagemagick
which_is CONVERT 'convert';
if [ $? != 0 ]; then logger $LLError "$CONVERT not found, aborting"; exit 1; fi
# imagemagick
which_is IMGDISPLAY 'display';
if [ $? != 0 ]; then logger $LLError "$IMGDISPLAY not found, aborting"; exit 1; fi
# exiftool
which_is EXIFTOOL 'exiftool';
if [ $? != 0 ]; then logger $LLError "$EXIFTOOL not found, aborting"; exit 1; fi
# xclip
which_is XCLIP 'xclip';
if [ $? != 0 ]; then logger $LLError "$XCLIP not found, aborting"; exit 1; fi
# printf
which_is PRINTF 'printf';
if [ $? != 0 ]; then logger $LLError "$PRINTF not found, aborting"; exit 1; fi
# sed
which_is SED 'sed';
if [ $? != 0 ]; then logger $LLError "$SED not found, aborting"; exit 1; fi
exec 3> >($MSGDIALOG --notification --listen) exec 3> >($MSGDIALOG --notification --listen)
# The PID of zenity is needed to kill the process at the end of the script # The PID of zenity is needed to kill the process at the end of the script
ZenityPID=$!; ZenityPID=$!;
#((ZenityPID=ZenityPID+1)) # this is a workaround as I don't know how to get the PID of zenity (but get the one of exec)
echo "tooltip:Script ${SCRIPTNAME}, Version ${VERSION}" >&3 echo "tooltip:Script ${SCRIPTNAME}, Version ${VERSION}" >&3
#$(logger 3 "Script ${SCRIPTNAME}, Version ${VERSION}"); logger $LLDebug "Script ${SCRIPTNAME}, Version ${VERSION}.";
if [ ! $# -gt 0 ]; then if [ ! $# -gt 0 ]; then
echo "img-helpr, Version: $VERSION, June 2021" echo "img-helpr, Version: $VERSION, June 2021"
echo "Syntax: img-helpr.sh IMG_FILE1 [IMG_FILE2 ...]"; echo "Syntax: img-helpr.sh IMG_FILE1 [IMG_FILE2 ...]";
@@ -155,6 +146,7 @@ fi;
## Nutzerdaten ## Nutzerdaten
USERDATAFILE=$MYHOME/.img_helpr; USERDATAFILE=$MYHOME/.img_helpr;
## If userdatafile does not exist create one with default values.
if [[ -f $USERDATAFILE ]]; then if [[ -f $USERDATAFILE ]]; then
source $USERDATAFILE; source $USERDATAFILE;
else else
@@ -164,25 +156,26 @@ else
fi fi
if [ ! -d "$local_blog_path" ]; then if [ ! -d "$local_blog_path" ]; then
echo "Lokaler Speicherpfad ($local_blog_path) für die Bilder existiert nicht!"; logger $LLError "Lokaler Speicherpfad ($local_blog_path) für die Bilder existiert nicht!";
exit 1; exit 1;
fi fi
## Aus den übergebenen Argumenten die Dateien rausklauben ## Aus den übergebenen Argumenten die Dateien rausklauben
## Leerzeichen behandeln: ## Leerzeichen behandeln:
logger $LLDebug "Taking care of spaces in file names.";
ARGS="$*"; ARGS="$*";
INP_C=0; INP_C=0;
INP_TEMP=""; INP_TEMP="";
for INP in $ARGS for INP in $ARGS
do do
#echo "INP ist: $INP"; logger $LLDebug "INP ist: $INP";
INP_TEMP="$INP_TEMP$INP"; INP_TEMP="$INP_TEMP$INP";
if [ -f "$INP_TEMP" ]; then if [ -f "$INP_TEMP" ]; then
FILE[$INP_C]="$INP_TEMP"; #echo "Arrayinhalt an der Stelle $INP_C: ${FILE[$INP_C]}"; FILE[$INP_C]="$INP_TEMP";
logger $LLDebug "Content of File[$INP_C]: ${FILE[$INP_C]}";
((INP_C=INP_C+1)); ((INP_C=INP_C+1));
INP_TEMP=""; INP_TEMP="";
else else
echo "Fehler: $?"
INP_TEMP="$INP_TEMP "; INP_TEMP="$INP_TEMP ";
fi fi
done done
@@ -194,9 +187,8 @@ declare -A EXIFDATETIMELIST; # nimmt das Aufnahmedatum + Uhrzeit des Originals
MAX_INP_C=$INP_C; MAX_INP_C=$INP_C;
for((INP_C=0;INP_C<${#FILE[*]};INP_C++)); for((INP_C=0;INP_C<${#FILE[*]};INP_C++));
do do
#echo "Bearbeite: ${FILE[$INP_C]}"; logger $LLDebug "Bearbeite: ${FILE[$INP_C]}";
#echo "Preview: $local_blog_path/preview.jpg"; logger $LLDebug "Preview: $local_blog_path/preview.jpg";
# Mögliches Vorschaubild aus exif holen und anzeigen
$EXIFTOOL -b -W "$local_blog_path/preview.jpg" -preview:PreviewImage "${FILE[$INP_C]}"; $EXIFTOOL -b -W "$local_blog_path/preview.jpg" -preview:PreviewImage "${FILE[$INP_C]}";
if [ -f "$local_blog_path/preview.jpg" ]; then # Wenn exifvorschau existierte: Anzeigen if [ -f "$local_blog_path/preview.jpg" ]; then # Wenn exifvorschau existierte: Anzeigen
origOrient=$($EXIFTOOL -s -s -s -n -Orientation "${FILE[$INP_C]}"); origOrient=$($EXIFTOOL -s -s -s -n -Orientation "${FILE[$INP_C]}");
@@ -214,7 +206,7 @@ do
DATETIMEORIGINAL=$($EXIFTOOL -DateTimeOriginal -S "${FILE[$INP_C]}" | $SED -e 's/DateTimeOriginal:\ //'); DATETIMEORIGINAL=$($EXIFTOOL -DateTimeOriginal -S "${FILE[$INP_C]}" | $SED -e 's/DateTimeOriginal:\ //');
## Datum alternativ von heute nehmen ## Datum alternativ von heute nehmen
if [[ -z "${OUT_PATH_Y##?([-+])+([0-9])}" ]] || [[ -z "${OUT_PATH_M##?([-+])+([0-9])}" ]] || [[ -z "${OUT_DAY##?([-+])+([0-9])}" ]]; then if [[ -z "${OUT_PATH_Y##?([-+])+([0-9])}" ]] || [[ -z "${OUT_PATH_M##?([-+])+([0-9])}" ]] || [[ -z "${OUT_DAY##?([-+])+([0-9])}" ]]; then
echo "Kein Datum in Exif gefunden (Jahr=$OUT_PATH_Y, Monat=$OUT_PATH_M, Tag=$OUT_DAY)"; logger $LLWarning "Kein Datum in Exif gefunden (Jahr=$OUT_PATH_Y, Monat=$OUT_PATH_M, Tag=$OUT_DAY)";
OUT_PATH_Y=$(date +%Y); OUT_PATH_Y=$(date +%Y);
OUT_PATH_M=$(date +%m); OUT_PATH_M=$(date +%m);
OUT_DAY=$(date +%d); OUT_DAY=$(date +%d);
@@ -240,7 +232,7 @@ do
while [ -z "${FILENAME}" ] while [ -z "${FILENAME}" ]
do do
FILENAME=$($MSGDIALOG --entry --title "Dateiname" --text "Welchen Dateinamen soll das Bild bekommen?" --entry-text="$OUT_DAY$USTRICH" 2> /dev/null); FILENAME=$($MSGDIALOG --entry --title "Dateiname" --text "Welchen Dateinamen soll das Bild bekommen?" --entry-text="$OUT_DAY$USTRICH" 2> /dev/null);
if [ "$?" -eq "1" ]; then # Es wurde Abbruch geklickt, Script endet: if [ $? -eq 1 ]; then # Es wurde Abbruch geklickt, Script endet:
kill $IMGDISPLAYPID; kill $IMGDISPLAYPID;
CleanUp; CleanUp;
exit 1; exit 1;
@@ -295,22 +287,22 @@ exec 4> >(${MSGDIALOG} --progress --title="${SCRIPTNAME} ($FILECOUNT files)" --p
PROGRESS=0; PROGRESS=0;
## Wenn keine Logindaten hinterlegt sind, muss das Script nur noch die exif-Daten schreiben ## Wenn keine Logindaten hinterlegt sind, muss das Script nur noch die exif-Daten schreiben
if [ -z "${SSH_LOGIN}" ]; then if [ -z "${SSH_LOGIN}" ]; then
#echo "nur exif setzen"; logger $LLDebug "No ssh upload, just setting exif.";
while [ ${#FILELIST[@]} -gt 0 ] # solange noch CONVERTPIDs vorhanden sind while [ ${#FILELIST[@]} -gt 0 ] # solange noch CONVERTPIDs vorhanden sind
do do
for CPID in "${!FILELIST[@]}"; for CPID in "${!FILELIST[@]}";
do do
if [ -n "${CPID}" -a -d "/proc/${CPID}" ]; then if [ -n "${CPID}" -a -d "/proc/${CPID}" ]; then
# Prozess läuft noch, hochladen noch nicht möglich logger $LLDebug "Process $CPID still running, exif postphoned.";
sleep 2; sleep 2;
else else
# Konvertierung beendet, kann exif schreiben logger $LLDebug "${FILELIST[${CPID}]} converted, doing exif.";
echo "# Setting exif ${FILELIST[${CPID}]}" >&4 echo "# Setting exif ${FILELIST[${CPID}]}" >&4
((PROGRESS++)) ((PROGRESS++))
echo $(( ($PROGRESS*100/$MAX_INP_C)-1 )) >&4 echo $(( ($PROGRESS*100/$MAX_INP_C)-1 )) >&4
$EXIFTOOL -overwrite_original -DateTimeOriginal="${EXIFDATETIMELIST[${CPID}]}" ${FILELIST[${CPID}]}; $EXIFTOOL -overwrite_original -DateTimeOriginal="${EXIFDATETIMELIST[${CPID}]}" ${FILELIST[${CPID}]};
$EXIFTOOL -overwrite_original -OriginalFileName="${EXIFORIGINALLIST[${CPID}]##*/}" ${FILELIST[${CPID}]}; $EXIFTOOL -overwrite_original -OriginalFileName="${EXIFORIGINALLIST[${CPID}]##*/}" ${FILELIST[${CPID}]};
#echo "tooltip:Argumente: ${EXIFORIGINALLIST[${CPID}]##*/}" >&3 # DEBUG! logger $LLDebug "tooltip:Argumente: ${EXIFORIGINALLIST[${CPID}]##*/}";
unset FILELIST["${CPID}"]; unset FILELIST["${CPID}"];
unset EXIFDATETIMELIST["${CPID}"]; unset EXIFDATETIMELIST["${CPID}"];
unset EXIFORIGINALLIST["${CPID}"]; unset EXIFORIGINALLIST["${CPID}"];
@@ -326,14 +318,14 @@ fi
## Hochladen der Bilder aufs Blog ## Hochladen der Bilder aufs Blog
while [ ${#FILELIST[@]} -gt 0 ] # solange noch CONVERTPIDs vorhanden sind while [ ${#FILELIST[@]} -gt 0 ] # solange noch CONVERTPIDs vorhanden sind
do do
#echo "Länge Liste: ${#FILELIST[@]}"; logger $LLDebug "Länge Liste: ${#FILELIST[@]}";
for CPID in "${!FILELIST[@]}"; for CPID in "${!FILELIST[@]}";
do do
if [ -n "${CPID}" -a -d "/proc/${CPID}" ]; then if [ -n "${CPID}" -a -d "/proc/${CPID}" ]; then
# Prozess läuft noch, hochladen noch nicht möglich logger $LLDebug "Process $CPID still running, exif and upload postphoned.";
sleep 2; sleep 2;
else else
#echo "Konvertierung beendet, kann exif und hochladen"; logger $LLDebug "${FILELIST[${CPID}]} converted, doing exif and upload.";
echo "# Setting exif ${FILELIST[${CPID}]}" >&4 echo "# Setting exif ${FILELIST[${CPID}]}" >&4
((PROGRESS++)) ((PROGRESS++))
echo $(( ($PROGRESS*25/$MAX_INP_C)-1 )) >&4 echo $(( ($PROGRESS*25/$MAX_INP_C)-1 )) >&4
@@ -352,7 +344,7 @@ do
done done
done done
sleep 5; sleep 2;
echo "100" >&4 # trigger auto-close of progressbar echo "100" >&4 # trigger auto-close of progressbar
CleanUp; CleanUp;
exec 4>&- exec 4>&-