smbclient-Ausgabe in root-script
Hi, ich habe auf meinem Server (OS11.4 evergreen, Unicode off derzeit) ein Überwachungsscript, welches mir so allerlei anzeigt, was im Netzwerk und auf diversen Systemen so los ist (nein, ich will nicht auf Nagios umsteigen). Unter anderem werden auch die Freigaben von Windows-PCs überwacht, zur Info erstmal mit smbclient. Wenn diese Freigaben Umlaute (i.allg. nur bei den Kommentaren) enthalten, zeigt smbclient -L <winhost> das - manuell aufgerufen - auch korrekt an. In einem script, welches via bash -c aufgerufen wird, führen diese -auf jeden Fall das "ü" - aber zum Verlust aller folgenden Zeichen bis zum Zeilenende, d.h. die folgende Ausgabezeile von smbclient klebt am dem ü vorhergehenden Zeichen dran. Ein "echo äöü" in dem betreffenden Script gibt die Umlaute aber korrekt aus... Das "bash -c"-aufrufende Script wird in /etc/rc.d/local gestartet. Wie kann ich ggf. smbclient korrekt mitgeben, welchen Zeichensatz es ausgeben soll, ich nehme mal an, es ist irgendein UTF-Ding? -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Joerg Thuemmler [09.07.2013 13:27]:
Hi,
ich habe auf meinem Server (OS11.4 evergreen, Unicode off derzeit) ein Überwachungsscript, welches mir so allerlei anzeigt, was im Netzwerk und auf diversen Systemen so los ist (nein, ich will nicht auf Nagios umsteigen). Unter anderem werden auch die Freigaben von Windows-PCs überwacht, zur Info erstmal mit smbclient. Wenn diese Freigaben Umlaute (i.allg. nur bei den Kommentaren) enthalten, zeigt smbclient -L <winhost> das - manuell aufgerufen - auch korrekt an. In einem script, welches via bash -c aufgerufen wird, führen diese -auf jeden Fall das "ü" - aber zum Verlust aller folgenden Zeichen bis zum Zeilenende, d.h. die folgende Ausgabezeile von smbclient klebt am dem ü vorhergehenden Zeichen dran. Ein "echo äöü" in dem betreffenden Script gibt die Umlaute aber korrekt aus... Das "bash -c"-aufrufende Script wird in /etc/rc.d/local gestartet.
Wie kann ich ggf. smbclient korrekt mitgeben, welchen Zeichensatz es ausgeben soll, ich nehme mal an, es ist irgendein UTF-Ding?
Ich vermute mal, bei Root steht LANG=C und beim User irgendetwas anderes (bei mir de_DE.UTF-8, bei Dir vielleicht de_DE.iso8859-15). Schreibe also direkt vor den Aufruf von smbclient (in dieselbe Zeile) die LANG-Einstellung und smbclient sollte die erwünschte Ausgabe bringen. Beispiel also alt: smbclient -L winhost neu: LANG=de_DE.iso8859-15 smbclient -L winhost HDH, Werner -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 09.07.2013 13:53, schrieb Werner Flamme:
Joerg Thuemmler [09.07.2013 13:27]:
Hi,
ich habe auf meinem Server (OS11.4 evergreen, Unicode off derzeit) ein Überwachungsscript, welches mir so allerlei anzeigt, was im Netzwerk und auf diversen Systemen so los ist (nein, ich will nicht auf Nagios umsteigen). Unter anderem werden auch die Freigaben von Windows-PCs überwacht, zur Info erstmal mit smbclient. Wenn diese Freigaben Umlaute (i.allg. nur bei den Kommentaren) enthalten, zeigt smbclient -L <winhost> das - manuell aufgerufen - auch korrekt an. In einem script, welches via bash -c aufgerufen wird, führen diese -auf jeden Fall das "ü" - aber zum Verlust aller folgenden Zeichen bis zum Zeilenende, d.h. die folgende Ausgabezeile von smbclient klebt am dem ü vorhergehenden Zeichen dran. Ein "echo äöü" in dem betreffenden Script gibt die Umlaute aber korrekt aus... Das "bash -c"-aufrufende Script wird in /etc/rc.d/local gestartet.
Wie kann ich ggf. smbclient korrekt mitgeben, welchen Zeichensatz es ausgeben soll, ich nehme mal an, es ist irgendein UTF-Ding?
Ich vermute mal, bei Root steht LANG=C und beim User irgendetwas anderes (bei mir de_DE.UTF-8, bei Dir vielleicht de_DE.iso8859-15).
Schreibe also direkt vor den Aufruf von smbclient (in dieselbe Zeile) die LANG-Einstellung und smbclient sollte die erwünschte Ausgabe bringen. Beispiel also
alt: smbclient -L winhost neu: LANG=de_DE.iso8859-15 smbclient -L winhost
HDH, Werner
Hi, nein, das hatte ich schon probiert. Es geht ja auch, wenn ich es von root manuell aufrufe. Und es geht ja auch, unter der Kontrolle des Scriptes Umlaute auszugeben. Nur die von smbclient werden irgendwo verwurstelt. Aber es muss schon in smbclient passieren, denn der Fehler tritt auch auf, wenn ich die Ausgabe sofort in eine Textdatei umlenke. Sonst könnte man ja was mit recode oder tr machen... Vielleicht muss ich mir mal die Quellen von smbclient ansehen, ob es statt LANG irgendeine andere Umgebungsvariable auswertet, um seinen Output ggf. zu konvertieren. Außerdem werde ich das Kommando mal von Cron ausführen lassen, mal sehen, was da rauskommt... cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 09.07.2013 15:04, schrieb Joerg Thuemmler:
Am 09.07.2013 13:53, schrieb Werner Flamme:
Joerg Thuemmler [09.07.2013 13:27]:
Hi,
ich habe auf meinem Server (OS11.4 evergreen, Unicode off derzeit) ein Überwachungsscript, welches mir so allerlei anzeigt, was im Netzwerk und auf diversen Systemen so los ist (nein, ich will nicht auf Nagios umsteigen). Unter anderem werden auch die Freigaben von Windows-PCs überwacht, zur Info erstmal mit smbclient. Wenn diese Freigaben Umlaute (i.allg. nur bei den Kommentaren) enthalten, zeigt smbclient -L <winhost> das - manuell aufgerufen - auch korrekt an. In einem script, welches via bash -c aufgerufen wird, führen diese -auf jeden Fall das "ü" - aber zum Verlust aller folgenden Zeichen bis zum Zeilenende, d.h. die folgende Ausgabezeile von smbclient klebt am dem ü vorhergehenden Zeichen dran. Ein "echo äöü" in dem betreffenden Script gibt die Umlaute aber korrekt aus... Das "bash -c"-aufrufende Script wird in /etc/rc.d/local gestartet.
Wie kann ich ggf. smbclient korrekt mitgeben, welchen Zeichensatz es ausgeben soll, ich nehme mal an, es ist irgendein UTF-Ding?
Ich vermute mal, bei Root steht LANG=C und beim User irgendetwas anderes (bei mir de_DE.UTF-8, bei Dir vielleicht de_DE.iso8859-15).
Schreibe also direkt vor den Aufruf von smbclient (in dieselbe Zeile) die LANG-Einstellung und smbclient sollte die erwünschte Ausgabe bringen. Beispiel also
alt: smbclient -L winhost neu: LANG=de_DE.iso8859-15 smbclient -L winhost
HDH, Werner
Hi,
nein, das hatte ich schon probiert. Es geht ja auch, wenn ich es von root manuell aufrufe. Und es geht ja auch, unter der Kontrolle des Scriptes Umlaute auszugeben. Nur die von smbclient werden irgendwo verwurstelt. Aber es muss schon in smbclient passieren, denn der Fehler tritt auch auf, wenn ich die Ausgabe sofort in eine Textdatei umlenke. Sonst könnte man ja was mit recode oder tr machen...
Vielleicht muss ich mir mal die Quellen von smbclient ansehen, ob es statt LANG irgendeine andere Umgebungsvariable auswertet, um seinen Output ggf. zu konvertieren. Außerdem werde ich das Kommando mal von Cron ausführen lassen, mal sehen, was da rauskommt...
cu jth
So, jetzt hab ich es gefunden. Smbclient verwendet die aktuelle locale (logischerweise, tat es ja auch) und falls es keine gibt, den Wert von "display charset" aus /etc/samba/smb.conf, falls das nicht gesetzt ist, kommt es anscheinend nicht so recht mit den generellen Einstellungen des Systems klar... display charset = ISO8859-15 eingetragen und gut ist... cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (2)
-
Joerg Thuemmler
-
Werner Flamme