bash script Ausgabe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gugus
Beiträge: 385
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

bash script Ausgabe

Beitrag von gugus » 12.12.2020 20:21:27

Servus
Ich habe mehrere Raspi's am laufen und lasse mir von denen die mir wichtig sind nächtlich eine kleine Zusammenfassung von System via Email zuschicken.
Für dieses Mail schreibe ich via Script diverse Abfragen in eine Datei und schreibe mir diese via cat in eine Maildatei. Funktioniert als solches gut.

Aktuell habe ich eine Ausgabe von "inxi -S" die nur als Einleitung dient.
Leider kommt diese Meldung irgendwie schräg da aus einem unerfindlichen Grund vor der Ausgabe ein "12" vorangestellt wird.

Ausgabe wenn ich von Hand eingebe:

Code: Alles auswählen

~# inxi -S
System:    Host: mimas Kernel: 4.19.66-v7+ armv7l bits: 32 Console: tty 0 Distro: Raspbian GNU/Linux 10 (buster)


Ausgabe im Email:

Code: Alles auswählen


12System:    12Host mimas 12Kernel 4.19.66-v7+ armv7l 12bits 32 12Console N/A 
           12Distro Raspbian GNU/Linux 10 (buster) 

Script:

Code: Alles auswählen


# Systeminformation
echo -e "Systeminfo:\n" > $SYS_INFO
/usr/bin/inxi -S >> $SYS_INFO

Anschliessen im Mail script mit

Code: Alles auswählen

cat $SYS_Info
wo kommen diese 12er her ?
Ich habe auch schon in eine Datei geschrieben, das selbe Problem.
Seltsam, da alle anderen Informationen die ich via Datei oder direkt in das Email schreibe korrekt sind.

Gruss
gugus

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: bash script Ausgabe

Beitrag von tobo » 12.12.2020 21:03:14

Highlighting/Schriftmerkmal/Farbe/Steuerzeichen kann ja nicht gut sein, aber trotzdem - Pipe das mal nach od -c rein und schaue es dir auch mal mit cat -v an. Vielleicht gibt das irgendwie Aufschluss!?

gugus
Beiträge: 385
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: bash script Ausgabe

Beitrag von gugus » 13.12.2020 08:50:25

Tja, nach einigem ausprobieren, von Hand, via script etc. am Ende immer noch das selbe.
Hmm, wo kommen diese zusätzlichen 12en her.
Ich denke ich muss den Raspi mal von Grund auf neu konfigurieren oder am Ende neu installieren.

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash script Ausgabe

Beitrag von Meillo » 13.12.2020 09:10:32

gugus hat geschrieben: ↑ zum Beitrag ↑
13.12.2020 08:50:25
Tja, nach einigem ausprobieren, von Hand, via script etc. am Ende immer noch das selbe.
Hmm, wo kommen diese zusätzlichen 12en her.
Um tobos sinnvollen Hinweis nochmal aufzugreifen: Poste bitte die Ausgabe von:

Code: Alles auswählen

inxi -S | od -c
Dann sehen wir weiter.

Ich denke ich muss den Raspi mal von Grund auf neu konfigurieren oder am Ende neu installieren.
LOL. Was dieses Problem angeht, wird das nichts aendern. Neu Installieren ist nicht noetig. Wenn du nicht von Hand im Quellcode von inxi rumgefummelt und das Programm neu kompiliert hast, dann wird nach einer Neuinstallation das Verhalten identisch sein. Wir muessen stattdessen dem Problem auf den Grund gehen. ;-)

Wenn ich in die Manpage schaue, dann steht da:
Manpage inxi(1) hat geschrieben: Script colors can be turned off if desired with -c 0
(tobo hatte ja schon vermutet, dass es an den Farben liegen koennte.)

Versuche mal:

Code: Alles auswählen

inxi -S -c 0
Dann werden die 12en wahrscheinlich weg sein, wuerde ich tippen.
Use ed once in a while!

gugus
Beiträge: 385
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: bash script Ausgabe

Beitrag von gugus » 13.12.2020 11:10:01

sodele, die Eingabe von Hand mit '-S -c 0' funktioniert (wie bereits vorher).
Ein manueller Start des einzelnen scripts funktioniert auch.
Heute Nacht resp. morgen Früh werde ich sehen ob es aus dem automatischen Systemaufruf auch funktioniert.

Danke erstmal, ich werde berichten...

Achso noch:

Code: Alles auswählen

root@mimas:~# inxi -S | od -c
0000000   S   y   s   t   e   m   :                   H   o   s   t   :
0000020       m   i   m   a   s       K   e   r   n   e   l   :       4
0000040   .   1   9   .   6   6   -   v   7   +       a   r   m   v   7
0000060   l       b   i   t   s   :       3   2       C   o   n   s   o
0000100   l   e   :       N   /   A       D   i   s   t   r   o   :    
0000120   R   a   s   p   b   i   a   n       G   N   U   /   L   i   n
0000140   u   x       1   0       (   b   u   s   t   e   r   )      \n
0000160

man sagt:
-c, --color [0-42]
Set color scheme. If no scheme number is supplied, 0 is assumed.

daher habe ich bis anhin auf -c 0 verzichtet, aber jetzt explizit mit.

Gruss
gugus

PS: das mit der konfig dachte ich mir ob eventuell bei einem der Updates etwas durch geschliffen ist.
Der Raspi läuft ja schon einige Zeit.

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: bash script Ausgabe

Beitrag von tobo » 13.12.2020 18:27:12

Ich habe das noch nicht ganz verstanden, was du hier mit E-Mail meinst. Ist das eine Systemmail, die durch z.B. einen Cron-Job erzeugt wird? Oder anders gefragt, wie wird denn dieser ganze Vorgang generiert?

Wenn man sich die Ausgabe oben mal genau anschaut, dann erscheint die 12 vor jedem Wort, das einem Doppelpunkt voransteht und dieser Doppelpunkt wird dann entfernt (außer dem ersten). Das ist kein natürliches Verhalten!?

gugus
Beiträge: 385
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

[gelöst] Re: bash script Ausgabe

Beitrag von gugus » 14.12.2020 10:20:07

Servus,
alles gut, es läuft jetzt wieder wie gewünscht.
es scheint tatsächlich der "-c 0" Parameter (mit der "0") gewesen zu sein.

Das Mail wird via script erzeugt und via cron ausgeführt.
Funktioniert bis anhin seit ca 4 Jahren so.

Woher der Doppelpunkt und die 12 davor kommen kann ich nicht sagen, es tauchte auf nachdem ich bei inxi den Parameter verändert habe. Vorher (vor dem -S) hatte ich einfach nur den inxi Aufruf drin.
Das Seltsame war dass sich inxi teilweise unterschiedlich verhalten hat, eben mal mit oder ohne 12.

Code: Alles auswählen

inxi:

Systeminfo Kernel 

CPU: Quad Core ARMv7 v7l (-MCP-) speed/min/max: 900/600/900 MHz Kernel: 4.19.66-v7+ armv7l Up: 50d 8h 57m 
Mem: 193.8/1002.1 MiB (19.3%) Storage: 1.94 TiB (0.2% used) Procs: 118 Shell: backup-status-m inxi: 3.0.32 

inxi -S -c 0
System:    Host: mimas Kernel: 4.19.66-v7+ armv7l bits: 32 Console: tty 0 Distro: Raspbian GNU/Linux 10 (buster)
Aber ich bin noch am testen wie die Info künftig aussehen soll.
Habe ja jetzt mehr Zeit zu Hause :mrgreen:

Gruss
gugus

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash script Ausgabe

Beitrag von Meillo » 14.12.2020 10:31:06

Verwende zum Testen z.B. `at now', dann musst du nicht so lange warten. Das Verhalten sollte damit gleich sein wie mit cron.

Pipe den Befehl in at/cron (also die Ausgabe mit den 12en) mal durch `od -c'.

Vergleiche auch mal die Ausgaben von `env' in at/cron und deinem Terminal.

Einen Unterschied enthaelt ja auch schon die Ausgabe von inxi: Einmal hast du eine Konsole und einmal nicht.
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Re: bash script Ausgabe

Beitrag von Meillo » 14.12.2020 10:55:38

gugus hat geschrieben: ↑ zum Beitrag ↑
14.12.2020 10:20:07
Woher der Doppelpunkt und die 12 davor kommen kann ich nicht sagen, es tauchte auf nachdem ich bei inxi den Parameter verändert habe. Vorher (vor dem -S) hatte ich einfach nur den inxi Aufruf drin.
Das Seltsame war dass sich inxi teilweise unterschiedlich verhalten hat, eben mal mit oder ohne 12.
Ich vermute, dass wir an dieser Stelle weiter kommen:

https://sources.debian.org/data/main/i/ ... 2-1-1/inxi

Code: Alles auswählen

    103 # these will assign a separator to non irc states. Important! Using ':' can
    104 # trigger stupid emoticon. Note: SEP1/SEP2 from short form not used anymore.
    105 # behaviors in output on IRC, so do not use those.
    106 my %sep = (
    107 's1-irc' => ':',
    108 's1-console' => ':',
    109 's2-irc' => '',
    110 's2-console' => ':',
    111 );

Code: Alles auswählen

    476 sub set_sep {
    477         if ( $b_irc ){
    478                 # too hard to read if no colors, so force that for users on irc
    479                 if ($colors{'scheme'} == 0 ){
    480                         $sep{'s1'} = $sep{'s1-console'};
    481                         $sep{'s2'} = $sep{'s2-console'};
    482                 }
    483                 else {
    484                         $sep{'s1'} = $sep{'s1-irc'};
    485                         $sep{'s2'} = $sep{'s2-irc'};
    486                 }
    487         }
    488         else {
    489                 $sep{'s1'} = $sep{'s1-console'};
    490                 $sep{'s2'} = $sep{'s2-console'};
    491         }
    492 }
Es gibt den Unterschied, ob die Shell eine Console/tty hat oder nicht. Wenn nicht (also in cron), dann denkt inxi wohl, es sei im IRC-Modus, und laut Kommentar in Zeile 478 werden dann Farben erzwungen (wenngleich ich das mit dem folgenden Code nicht in Uebereinstimmung bringen konnte -- entweder ich habe einfach keine Ahnung von Perl, oder der Code ist nicht der lesbarste).

Wenn man Farben hat, muss man Key und Value nicht mehr mit einem Doppelpunkt abgrenzen, darum faellt der dann wohl weg. Der ANSI-Farbescape erzeugt dann wohl die 12.

Code: Alles auswählen

   5681 sub print_data {
...
   5702         foreach my $key1 (sort { substr($a,0,3) <=> substr($b,0,3) } keys %data) {
...
   5706                         $start = sprintf("$colors{'c1'}%-${indent}s$colors{'cn'}","$key$sep{'s1'}");
(Den folgenden Code, der 10(!) Ebenen tief geschachtelt war, hab ich mir dann erspart ... da beginnt die Zeile erst am rechten Ende meines Terminals. :roll: )

Dann noch das:

Code: Alles auswählen

    657 sub set_color_scheme {
...
    661         my $index = ( $b_irc ) ? 1 : 0; # defaults to non irc
...
    675         'BLUE' => [ "\e[1;34m", "\x0312" ], 
...
    685         my @scheme = get_color_scheme($colors{'scheme'});
    686         $colors{'c1'} = $color_palette{$scheme[0]}[$index];
    687         $colors{'c2'} = $color_palette{$scheme[1]}[$index];
    688         $colors{'cn'} = $color_palette{$scheme[2]}[$index];
Sieht so aus, wie wenn der erste Wert ein ANSI-Escape fuer das Terminal ist und der zweite fuer IRC (Zeile 661). Wenn inxi keine Konsole hat (in cron), dann nimmt es wohl den zweiten Wert, von dem dann das `\x03' verschwindet und die `12' stehen bleibt ... mal wild spekuliert.

Weiss jemand wie das mit Farben in IRC geht? Nutzt man da `\x03'-Escapes?


So, das soll's an der Stelle mal von mir gewesen sein. Genug Perl-Code angeschaut. :roll:
Use ed once in a while!

gugus
Beiträge: 385
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: bash script Ausgabe

Beitrag von gugus » 14.12.2020 11:18:10

Das Thema 12 ist für mich aktuell gelöst und möchte mich mehr auf die Aktualisierung des Rests konzentrieren.

Mein Konstrukt fusst natürlich nicht alleine auf cron. Ist über Zeit gewachsen und ist irgendwie eine kleine Baustelle die ich jetzt eben aufräume.

Ich habe eine schaltbare Steckdose von Gembird die via cron gestartet wird. An der Steckdose hängt eine externe Festplatte die am Raspi angeschlossen ist. Die Platte startet und mit der Anmeldung der Platte am System starte ich via Udev/Systemd das Backup Script das wiederum rsnapshot aufruft. Das Script schreibt auch unter anderem zB. die Festplattenbelegung vor und nach dem Backup in eine Datei die dann vom Mailscript gelesen und verabeitet wird.

Somit kann ich das Backup Script auch irgendwann von Hand starten indem ich die Steckdose via System einschalte.
Alles weitere läuft dann immer gleich ab egal ob von cron oder hand.

So sieht dann das Mail aus: (aber ich überarbeite es gerade)

Code: Alles auswählen

Systeminfo:

System:    Host: mimas Kernel: 4.19.66-v7+ armv7l bits: 32 Console: N/A Distro: Raspbian GNU/Linux 10 (buster) 

Mimas Backup Report am 13.12.2020:
[2020-12-13T02:04:59] /usr/bin/rsnapshot weekly: completed successfully

Festplatte auf Stecker: 3, Block-ID: 973bba4a-118c-48f6-9f3e-42944619f816
Datum: 13-12-2020 Zeit: 02:04
- Disk usage before weekly Backup:
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda1       1,8T    756G  985G   44% /media/usb-backup


Festplatte auf Stecker: 3, Block-ID: 973bba4a-118c-48f6-9f3e-42944619f816
Datum: 13-12-2020 Zeit: 02:04
- Disk usage after Backup:
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda1       1,8T    756G  985G   44% /media/usb-backup
Aber es geht nicht nur alleine um das Backup, es geht auch um Pi-Hole, NFS, Intrusion und weitere Dienste die ich überwachen möchte. Ja, da gibt es verschiedene Produkte die aber alle oder zumindest die meisten einen Client benötigen. Habe ich schon ausprobiert (nagios, OMD und MK etc..), sind aber aufwändig für meine kleine Systemlandschaft. Da genügen mir verschiedene Scripte.

Gruss
gugus
Zuletzt geändert von gugus am 14.12.2020 11:35:39, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Re: bash script Ausgabe

Beitrag von Meillo » 14.12.2020 11:32:09

Meillo hat geschrieben: ↑ zum Beitrag ↑
14.12.2020 10:55:38
Weiss jemand wie das mit Farben in IRC geht? Nutzt man da `\x03'-Escapes?
So ist es:
https://en.wikichip.org/wiki/irc/colors hat geschrieben: The sub-protocol supports both background and foreground coloring via the 0x03 code point.
`12' ist die Farbe ``royal blue''.
Use ed once in a while!

Antworten