efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Diskussion, Fragen, Anregungen und Wünsche zu efaLive

Moderator: klinux

Forumsregeln
Verfasse bitte die Beiträge in den passenden Kategorien und gib ihnen einen aussagekräftigen Betreff.
Antworte bitte nur zum Thema und beginne ein neues Thema, falls Du noch etwas Zusätzliches sagen möchtest.
Antworten
nilpfu
Beiträge: 24
Registriert: Mi 5. Okt 2011, 11:27

efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von nilpfu » Fr 10. Apr 2020, 23:44

Hallo zusammen,
ich habe mir ein Shell Skript geschrieben, dass automatisch Daten aus unser Mitgliederverwaltung in efa2 importieren kann. Wenn ich das Skript selber in einer Shell starte läuft es auch wie erwartet durch.
Nun möchte ich das Skript gerne 1x/Monat vom efaLIveDaemon ausführen lassen. Allerdings bekomme ich in efaLiveDaemon.log dann folgende Fehlermeldungen:

Code: Alles auswählen

2020-04-10 23:16:25,886 ERROR efalivedaemon.EfaLiveDaemon: An error occured which was not handled in it's sub module:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/efalive/daemon/efalivedaemon.py", line 96, in run
    scheduler.run_tasks()
  File "/usr/lib/python3/dist-packages/efalive/daemon/efalivedaemon.py", line 253, in run_tasks
    task.run()
  File "/usr/lib/python3/dist-packages/efalive/daemon/tasks.py", line 55, in run
    (returncode, output) = common.command_output(self._shell_command.split(' '))
  File "/usr/lib/python3/dist-packages/efalive/common/common.py", line 54, in command_output
    output = process.communicate()[0].decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 392: invalid start byte
Als auszuführenden Befehl habe ich den kompletten Namen des Skripts eingetragen, d.h. "/home/efa/efaUpdateData". Hat jemand von Euch diese Funktion bereits benutzt und Erfahrungen damit bzw. eine Ahnung woran es liegen könnte?

Vielen Dank für die Unterstützung und schöne Ostertage

klinux
Beiträge: 202
Registriert: Mi 21. Jul 2010, 11:36

Re: efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von klinux » Di 8. Sep 2020, 17:29

Hallo,

existiert das Problem noch? Wenn ja, ich kann verschiedene Scripte ohne Probleme aufrufen (lassen). Der Fehlermeldung nach handelt es sich um ein Encoding-Problem. Vielleicht gibt es da komische Zeichen in dem Script, bzw. in dessen Ausgabe? Vielleicht kannst Du das Script hier posten, wenn da nichts geheimes drin steht.

Viele Grüße

nilpfu
Beiträge: 24
Registriert: Mi 5. Okt 2011, 11:27

Re: efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von nilpfu » Mi 17. Mär 2021, 21:55

Hallo,
ich habe leider heute erst wieder ins Forum geschaut. Das Problem besteht immer noch und der Bedarf für das Skript auch. Hier das Skript:

Code: Alles auswählen

#!/bin/bash
#
###
#
# get data from HRC database to import membership data automatically 
# created for efa2 by nilpfu, July 04, 2014
# adapted April, 10, 2020
#
###
#
# variable to store file name 
MEMBERSHIP_FILE="efa_personen.csv"

# check if efalive has been configured
if [ -f ~/.efalive/settings.conf ]
then
    . ~/.efalive/settings.conf
else
    /bin/echo "efaLive has not been configured yet!"
    exit 240
fi

### remove old downloaded membership data
rm $MEMBERSHIP_FILE

### download new data via wget to home directory
wget -P ~ --http-user=XXX --http-password=XYZ --no-cache https://ssl.URL.de/export/efa_personen.csv

### check if download was successful
if [ -f "$MEMBERSHIP_FILE" ]
then
	/bin/echo "$MEMBERSHIP_FILE successfully downloaded, import data into efa2"

	# carry on with data import
	# import data via efaCli if efa_personen.csv exists
	EFA_CRED=$EFA_CREDENTIALS_FILE efacli efalive@localhost:$EFA_PORT -cmd "persons import -encoding=UTF8 -csvsep=| -impmode=addupdate -updversion=update /home/efa/$MEMBERSHIP_FILE"
	# get returncode from efaCLI	
	CLI_RETURNCODE=$?
	if [ $CLI_RETURNCODE -ne 0 ]
	then
	    # something went wrong...
	    /bin/echo "Error, membership data could not be imported into efa2 ($CLI_RETURNCODE)"
	    exit $CLI_RETURNCODE
	else
	    # data import was successful give respective message
	    /bin/echo "$(date) membership data successfully imported into efa2" 
	fi
else
	/bin/echo "Error, $MEMBERSHIP_FILE does not exist, maybe something went wrong with the download"
	exit 243
fi 
Das Encoding der Datei ist UTF8 und das Line-ending ist ebenfalls als Linux eingestellt, d.h. von der Seite würde ich jetzt keine Probleme erwarten. Im wget Befehl habe ich Dummys eingesetzt. Da stehen allerdings auch nur Buchstaben und Zahlen drin, d.h. keine komischen Zeichen oder Umlaute. Entsprechend erwarte ich von der Seite aus auch nichts.

Vielen Dank für die Unterstützung und viele Grüße

klinux
Beiträge: 202
Registriert: Mi 21. Jul 2010, 11:36

Re: efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von klinux » Do 18. Mär 2021, 14:08

Ich habe das Skript nun, leicht abgeändert, mal hier laufen lassen und konnte keine Probleme feststellen. Geändert habe ich nur den WGET Befehl, um die Datei von einem anderen Server zu laden. Ich kann das die tage noch auf anderen System testen, aber bisher läuft das ohne Probleme.

nilpfu
Beiträge: 24
Registriert: Mi 5. Okt 2011, 11:27

Re: efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von nilpfu » Di 23. Mär 2021, 21:54

Danke für die schnelle Antwort. Ich habe jetzt eben auch einmal die Zeilen

Code: Alles auswählen

### remove old downloaded membership data
#rm $MEMBERSHIP_FILE

### download new data via wget to home directory
#wget -P ~ --http-user=XXX --http-password=XYZ --no-cache https://ssl.URL.de/export/efa_personen.csv
auskommentiert und damit ist das Skript durchgelaufen. Entsprechend muss irgendwas mit der wget Zeile los sein, wobei mir noch nicht klar ist was. Ich probiere das gleich nochmal aus.

Viele Grüße

nilpfu
Beiträge: 24
Registriert: Mi 5. Okt 2011, 11:27

Re: efaLive 2.7, Aufgabe Shell gibt Fehlermeldung

Beitrag von nilpfu » Mi 24. Mär 2021, 11:39

Habe die Lösung gefunden. Die Ausgabe von wget erzeugt Sonderzeichen, die nicht aufgelöst werden. Entsprechend sollte man die Ausgabe auf jeden Fall abschalten.

Code: Alles auswählen

### download new data via wget to home directory
wget -q --http-user=XXX --http-password=XYZ --no-cache https://ssl.URL.de/export/efa_personen.csv
Mit der Änderung läuft das Skript wie erwartet durch. Zur Vereinfachung habe ich abgesehen von der URL alle Parameter in eine .wgetrc für den User efa ausgegliedert:

Code: Alles auswählen

#user name and password
http_user=XXX
http_password=XYZ
# disable cache
cache = off
# switch on quit mode
quiet = on
Anschließend ändert man die Nutzerrechte mit chmod 600. Damit liegen der Nutzername und Passwort auch nicht mehr direkt zugänglich im Skript und man muss nur noch die URL angeben:

Code: Alles auswählen

### download new data via wget to home directory
wget https://ssl.URL.de/export/efa_personen.csv
Ich hoffe die Infos helfen anderen bei ähnlichen Problemen weiter.
Viele Grüße

Antworten