• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Tabulator setzen in Shellscript?

revealed

Guru
Hallo!

Ich habe ein beliebiges Shellscript ... dieses gibt bestimmte Schritte aus via echo.
Das Script sieht so aus:
Code:
#!/bin/sh
## Tagesdatum mit Erstelldatum einer Datei Vergleichen:
#
# Ein Standardtext der Erscheinen soll:
echo "--------------------------------------------------------------
This determines wether the backupfiles are from today or not:
--------------------------------------------------------------
"
#  Variable heutiges Datum
date="$( date "+%Y-%m-%d %H" )";
#
# Variable auflistung des Erstelldatums der Datei htdocs_back.tar
VARht="$( ls -lh --full-time /windows/E/cron_backup/htdocs_back.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARht" = "$date" ]; then
  echo -e "HTDOCS Backup \t\t\t [OK]";
else
  echo -e "HTDOCS Backup \t\t\t [Error]";
fi;
#
# Variable auflistung des Erstelldatums der Datei nagios_back.tar
VARnag="$( ls -lh --full-time /windows/E/cron_backup/nagios_back.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARnag" = "$date" ]; then
  echo -e "NagiosTEST Backup \t\t\t [OK]";
else
  echo -e "NagiosTEST Backup \t\t\t [Error]";
fi;
#
# (Enthält noch mehrere Abfragen);;;;;
Mein Problem ist, ich möchte die Ausgabe verschönern, das heisst die Error - bzw. OK Meldung der Ausgabe soll in einer Spalte immer genau untereinander stehen. Von Textverarbeitungsgeschichten her, setzt man dort gewohnt einen Tabulator? Geht das irgendwie?

Die Problemstellung wird in der erzeugten Ausgabe noch deutlicher:
Code:
sh /test.sh
--------------------------------------------------------------
This determines wether the backupfiles are from today or not:
--------------------------------------------------------------

HTDOCS Backup                    [Error]
NagiosTEST Backup                        [Error]
Falls ihr jetzt fragen solltet --> Dann mach halt das TEST weg? Dann muss ich euch mein Problem schildern, dass im Originalscript beispielsweise eine Bezeichnung verwendet wird:
Code:
AWSTATS and WEBSTATS Backup

Ich bräuchte also ein lösung mit der unabhängig von der Länge des Ersten Wortes der Ausgabe das Wort in der eckigen Klammer immer im selben Abstand auf den Dokumentrand hin gesehen distanziert werden kann?

Problem ist halt beispielsweise dass bestimmte Buchstaben eine andere Breite haben, als wiederum andere, deswegen verrutscht der Tabulator immer abhängig von der Wortlänge ---

Vielen Dank für die Hilfe!

Gruß,

R

PS.: Es wurden immer drei Tabulatoren Gesetzt, jedoch ist immer ein Unterschiedlicher Abstand zum Seitenrand?

Also man siehts in der E-Mail die dann von Cron kommt
 

P6CNAT

Advanced Hacker
Hi,

du brauchst die Funktion printf, damit kannst du für jeden einzelnen Teilstring eine feste Ausgabelänge angeben.

Code:
printf "%10s %5s %3s \n" "test" "b" "abcdef"
      test     b abcdef

Gruß
Georg
 
OP
revealed

revealed

Guru
Vielen Dank für die Antworten! :)

Ich habe mein Script gerade gleich mal umgebaut und schaue mir die Ausgabe gleich an.

Also die Ausgabe in der Konsole steht schnurgerade in einer Reihe. Nur ist jetzt die Frage, wie es dann in der E-Mail aussieht die von Cron kommt. Das dauert noch einen Moment...

Danke nochmals!

Ich zeige euch mal einen Screenshot... Weil leider hat es nicht geklappt :S

dazu gibts auch den Code:
Code:
#!/bin/sh
## Tagesdatum mit Erstelldatum einer Datei Vergleichen:
#
# Ein Standardtext der Erscheinen soll:
echo "--------------------------------------------------------------------
This determines wether the backupfiles are from today or not:
--------------------------------------------------------------------
"
#  Variable heutiges Datum
date="$( date "+%Y-%m-%d %H" )";
#
# Variable auflistung des Erstelldatums der Datei htdocs_back.tar
VARht="$( ls -lh --full-time /windows/E/cron_backup/htdocs_back.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARht" = "$date" ]; then
  printf "%3s %5s %30s \n" "HTDOCS" "Backup" "[OK]";
else
  printf "%3s %5s %30s \n" "HTDOCS" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der Datei nagios_back.tar 
VARnag="$( ls -lh --full-time /windows/E/cron_backup/nagios_back.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARnag" = "$date" ]; then
  printf "%3s %5s %30s \n" "Nagios" "Backup" "[OK]";
else
  printf "%3s %5s %30s \n" "Nagios" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der Datei emailback.tar
VARmail="$( ls -lh --full-time /windows/E/cron_backup/emailback.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARmail" = "$date" ]; then
  printf "%3s %5s %30s \n" "E-Mail" "Backup" "[OK]";
else
  printf "%3s %5s %30s \n" "E-Mail" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der MySQL TGZ
VARsql="$( ls -lh --full-time /windows/E/cron_backup/MySQL/MySQL.tgz | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARsql" = "$date" ]; then
  printf "%3s %5s %27s \n" "MySQL TAR" "Backup" "[OK]";
else
  printf "%3s %5s %27s \n" "MySQL TAR" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der MySQL_dump TAR
VARsqleins="$( ls -lh --full-time /windows/E/cron_backup/MySQL/MySQL_dump.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARsqleins" = "$date" ]; then
  printf "%3s %5s %26s \n" "MySQL dump" "Backup" "[OK]";
else
  printf "%3s %5s %26s \n" "MySQL dump" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der scripte_backup TAR
VARscr="$( ls -lh --full-time /windows/E/cron_backup/scripte_backup.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARscr" = "$date" ]; then
  printf "%3s %5s %30s \n" "Script" "Backup" "[OK]";
else
  printf "%3s %5s %30s \n" "Script" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der apache2_conf_d TAR
VARapa="$( ls -lh --full-time /windows/E/cron_backup/apache2_conf_d.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARapa" = "$date" ]; then
  printf "%3s %5s %22s \n" "Apache2 conf.d" "Backup" "[OK]";
else
  printf "%3s %5s %22s \n" "Apache2 conf.d" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der awwebstatsback TAR
VARawweb="$( ls -lh --full-time /windows/E/cron_backup/awwebstatsback.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARawweb" = "$date" ]; then
  printf "%3s %5s %16s \n" "AWSTATS and WEBSTATS" "Backup" "[OK]";
else
  printf "%3s %5s %16s \n" "AWSTATS and WEBSTATS" "Backup" "[Error]";
fi;
#
# Variable auflistung des Erstelldatums der htaccesses_back TAR
VARhtac="$( ls -lh --full-time /windows/E/cron_backup/htaccesses_back.tar | awk -F \: '{print $1}' | egrep -o "[^ ]+ [^ ]+$" )";
#
# Abfrage ob die Bedingung zutrifft
if [ "$VARhtac" = "$date" ]; then
  printf "%3s %5s %28s \n" "htaccess" "Backup" "[OK]";
else
  printf "%3s %5s %28s \n" "htaccess" "Backup" "[Error]";
fi;
#
exit 0
# EOF

Gruß,

R
 

Anhänge

  • Backupcheck.jpg
    Backupcheck.jpg
    160,1 KB · Aufrufe: 236

panamajo

Guru
revealed schrieb:
Also die Ausgabe in der Konsole steht schnurgerade in einer Reihe.
[...]
Ich zeige euch mal einen Screenshot... Weil leider hat es nicht geklappt :S
Kein Wunder wenn du zur Anzeige der Mail eine nichtproportionale Schriftart verwendest.

EDIT: (k)
 
OP
revealed

revealed

Guru
kannst du mir da gerade zufällig eine schöne sagen? Dann währe das ja gelöst, wenn dem so ist. Mit fonts kenn ich mich nicht so gut aus... ?

Gruß,

R
 
OP
revealed

revealed

Guru
Wow das ging ja fix :)

Ich hab mal umgestellt auf:
Code:
Bitstream Vera Sans Mono
Werde gleich den Screenshot dazu posten.... noch auf Email warten..

Danke schonmal!

Gruß,

R
 

Anhänge

  • backupcheckV2_2.jpg
    backupcheckV2_2.jpg
    159,9 KB · Aufrufe: 202
Oben