Fehlermeldung "36 leere Zeilen" im WebUI

Hallo Linuxmuster-Team!

Ich habe mir gerade ein frischen LMN 7.1 Server samt OpnSense (derzeit noch parallel zu einem LMN 6.2-System) „from Scratch“ auf einem Proxmox aufgesetzt. Das läuft bisher sehr schön. Vielen Dank an die Entwickler und auch Dokumentateure! Sehr beeindruckend!

Ein kleines erstes Problem habe ich: ich habe mir gem. Anleitung die Daten von 6.2 nach 7.1 migriert. Dabei wurde offenbar auch ein Gastuser mit Usernamen „ga“ mit migriert. Hier der Blick auf die Listenverwaltung:

Will ich diesen über den Mülleimer-Button im WebUI löschen und klicke auf „Speichern“ bekomme ich die schöne Fehlermeldung „36 leere Zeilen“:

Hat jemand einen Lösungsvorschlag für mich?

Hier die installierten LMN-Pakete:

ii  linuxmuster-base7                      7.1.15-0                                        all          linuxmuster.net configuration scripts
ii  linuxmuster-linbo-gui7                 7.0.5                                           all          Linuxmuster Linbo GUI
ii  linuxmuster-linbo7                     4.0.33-0                                        all          linuxmuster-linbo7
ii  linuxmuster-prepare                    7.1.7-0                                         all          linuxmuster.net pre setup configuration scripts
ii  linuxmuster-webui7                     7.1.38                                          all          Next generation web-based management tool for linuxm

Klicke mal unten auf CSV editieren und schaue ob du leere Zeilen in deiner CSV hast :slight_smile:

Hallo Till,

der Versuch endet in einem Serverfehler:

Trace:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/aj/api/endpoint.py", line 75, in wrapper
    result = fx(self, context, *args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/ajenti_plugin_filesystem/views.py", line 62, in handle_api_fs_read
    content = content.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 145: invalid continuation byte

Habe mir daraufhin die extrastudents.csv mal angesehen. Da fallen mir auch keine Leerzeilen auf:

Beste Grüße,
Jens

Hallo,

der Versuch endet in einem Serverfehler:

dann schau mal auf der Serverconsole in die Datei rein.
Sie liegt unter /etc/linuxmuster/sophomorix/default-school/???.csv

LG

Holger

Hallo Holger,

die hatte ich ja oben gepostet … in der verpixelten Zeile gibt es keine Sonderzeichen oder sonst was auffälliges. Oder meinst Du eine andere Datei?

Jens

Es handelt sich da um ein Encoding Problem. Deine Datei ist nicht im UTF-8 Format, wird aber als dieses erkannt.

Da du nur zwei Zweilen hast würde ich die Datei einfach löschen und die Zeile über die Webui eintragen. Dann sollte es auch mit dem Encoding klappen.

Hallo Till,

danke für den Hinweis. Ich dachte halt - da ich mich überall bewusst eng an die Anleitungen gehalten habe - dass vielleicht von Interesse wäre, woher das Problem kommt. Ich werde ja nicht der Letzte sein, der von 6.2 zu 7.1 migriert (und andere vielleicht mit mehr Usern).

Ich habe das aber natürlich probiert: Datei extrastudents.csv gelöscht (bzw. als Backup umbenannt) und WebUI neu geöffnet: Listenverwaltung Extra-Schüler ist (wie erwartet) leer. Im WebUI „+ Schüler hinzufügen“ geklickt und neuen Test-Schüler angelegt. Speichern funktioniert, Speichern & Prüfen bringt wieder einen Server-Error:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/aj/api/endpoint.py", line 75, in wrapper
    result = fx(self, context, *args, **kwargs)
  File "/usr/lib/linuxmuster-webui/plugins/lmn_users/views.py", line 504, in handle_api_users_check
    results = lmn_getSophomorixValue(sophomorixCommand, '')
  File "/usr/lib/linuxmuster-webui/plugins/lmn_common/api.py", line 103, in lmn_getSophomorixValue
    output = t.stderr.decode("utf8").replace(':null', ":\"null\"")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 1440: invalid start byte

Beste Grüße,
Jens

Hier ist der Fehler zu finden… So ganz kann ich mir nicht erklären wieso das Encoding bei einer neuen Datei fehlschlägt. Kannst du bitte mal deine extrastudents.csv hier hochladen bzw. falls sensible Daten vorhanden mir per PN schicken?

Guten Morgen!

Ich hatte noch einen Austausch mit Holger und bin mir nun eigentlich sicher, dass es an meiner Datei extrastudents.csv nicht liegt:

Wenn ich die Datei umbenenne (oder lösche), vom WebUI (oder auch auf der Konsole mit touch extrastudents.csv) neu erzeugen lasse und dann (egal ob über das WebUI oder über vim auf der Konsole) einen neuen Eintrag (selbst ohne jegliche Sonderzeichen, z.B. „Max Mustermann“) erstelle, lande ich mit „Speichern & Prüfen“ im Serverfehler:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/aj/api/endpoint.py", line 75, in wrapper
    result = fx(self, context, *args, **kwargs)
  File "/usr/lib/linuxmuster-webui/plugins/lmn_users/views.py", line 504, in handle_api_users_check
    results = lmn_getSophomorixValue(sophomorixCommand, '')
  File "/usr/lib/linuxmuster-webui/plugins/lmn_common/api.py", line 103, in lmn_getSophomorixValue
    output = t.stderr.decode("utf8").replace(':null', ":\"null\"")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 540: invalid start byte

Führe ich auf der Konsole

sophomorix-check
sophomorix-update

durch, ist das System zufrieden. Der User wird hinzugefügt.

Anbei die Beispiel-Datei extrastudents.csv, die o.g. Serverfehler bei mir wirft. Die Frage ist ja jetzt: warum mag das WebUI nicht, was sophomorix mag … und liegt es ggf. noch an irgendeiner anderen Datei, denn die ominöse Fehlermeldung „36 leere Zeilen“ steht ja auch noch im Raum.

Vielen Dank für Eure Bereitschaft, mitzudenken und mein Problem zu lösen!
Jens

extrastudents.zip (218 Bytes)

Hallo,

ich hab noch eine Idee:
vielleicht klappert die WebUI da noch weitere .csv Dateien im
Verzeichnis ab: also nicht nur extrastudents.csv sondern auch
extraclasses.csv …??

LG
Holger

Hallo!

Gute Idee. Es ist die teachers.csv. Wenn ich die umbenenne, ist der Serverfehler weg. sophomorix-check meint zur originalen teachers.csv (die ja durch die Migration 6.2 > 7.1 entstanden ist) folgendes:

Encoding teachers.csv: WINDOWS-1252 (ENCODING=auto,*_FORCE=FALSE, *_CHECKED=WINDOWS-1252)

Kann die WebUI (im Gegensatz zu sophomorix) ggf. nicht mit WINDOWS-1252-Enconding umgehen?

Im ersten Schritt wollte ich nun zum weiteren Einschränken das Dateiformat mit vi auf UTF-8 konvertieren.

:set ff ?

gab aber bereits

fileformat=unix

aus.

Daraufhin habe ich die Datei dann mit

recode -f utf-8 teachers.csv

zwangsweise in UTF-8 konvertiert. Dabei haben alle Lehrer mit Umlauten im Namen diese verloren. Anschließend per vi wieder ergänzt. Jetzt erkennt sophomorix-update die Datei als UTF-8 und auch die WebUI ist zufrieden und läuft ohne Serverfehler auch bei „Speichern & Prüfen“ durch.

Optimaler Weise sollten wohl die Import-Migrations-Scripte sicherstellen, dass die csv-Dateien so hinterlassen werden, dass sie von sophomorix als UTF-8 erkannt werden.

Mein Problem ist damit aber zunächst gelöst, wenngleich die „Lösung“ bei größeren Schulen als meiner sicher etwas Arbeit für das manuelle Ergänzen der Umlaute macht. Vielleicht ist das Ändern der Kodierung mit iconv hier besser? Und auch die Fehlermeldung „36 leere Zeilen“ bleibt kryptisch, da ich bisher nirgendwo leere Zeilen finden konnte.

Beste Grüße!
Jens

Hallo,

ich möchte anmerken, dass die Art/Kodierung des Zeilenumbruchs (ob \r\n wie in Windows oder nur \n unter Linux), was du da mit „:set ff“ bearbeitest, nichts mit UTF-8 zu tun hat. Das sind zwei verschiedene Sachen/Einstellungen.

Du kannst ASCII/Windows-1252/UTF-8/-Dateien mit \r\n oder nur \n haben.

MfG Buster