Anzeige:
Ergebnis 1 bis 15 von 25

Thema: date grep Sprachproblem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    19.06.2000
    Beiträge
    32
    Hi Jan61

    Ich denke das es so wie Du es geschrieben hast funktionieren wird. Leider kann ich wegen Zeitmangel erst am WE wieder testen.

    Kann ich das mit der LC_LANG denn dann auch in mein Skript einbauen?
    Ich dachte mir das so


    Code:
    #!/bin/bash
    
    /bin/bash
    LC_ALL=en_EN.utf8
    
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    exit
    Ich will nicht das das setzen der LC meine Umgebungsvariablen vom Server komplett verhunzen.
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.06.2000
    Beiträge
    32
    Hi

    Ok es geht soweit alles. In meinem Skript muß ich nur den bash Befehl weg lassen.

    Aber jetzt habe ich hoffentlich nur noch eine einzige Frage :-)

    Wie mache ich das richtig

    Code:
    cat /var/log/everything/log-`date -d yesterday -I`* | grep date -d yesterday +"%a %b %e"` -i -e fail -e warn -e error


    Vielen Dank für Deine Mühe
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.06.2000
    Beiträge
    32
    So habe es jetzt hin bekommen. Habe es etwas anders gemacht wie gedacht, aber es geht super


    Code:
    #! /bin/bash
    ## Auszüge aus verschiedenen Logfiles per Mail versenden
    
    # Umgebungsvariable setzen
    LC_ALL=en_EN.utf8
    datum=`date`
    rechner=`hostname`
    
    echo "
    
          Logfilebericht            $datum
                 Rechner:            $rechner
    
    
    ========== Begin Festplattenbelegung ==========
    "
    df -h
    echo "
    ========== Ende Festplattenbelegung ==========
    
    
    
    
    ========== Begin ClamAV Update Virendatenbank ==========
    "
    grep "`date -d yesterday +"%a %b %e"`" /var/log/clamav/freshclam.log
    echo "
    ========== Ende ClamAV Update Virendatenbank ==========
    
    
    
    
    ========== Begin Fehlermeldung ClamAV von gestern in /var/log/clamav/clamd.log ==========
    "
    grep "`date -d yesterday +"%a %b %e"`" /var/log/clamav/clamd.log | grep -i -e error -e warn -e fail
    echo "
    ===== Ende ClamAV Logfile Auszug von gestern ==========
    
    
    
    
    ===== Begin Fehlermeldungen von gestern in /var/log/everything/ ==========
    "
    cat /var/log/everything/log-`date -I`* | grep "`date -d yesterday +"%b %e"`" | grep -i -e fail -e warn -e error
    grep "`date -d yesterday +"%a %b %e"`" /var/log/everything/current | grep -i -e error -e warn -e fail
    echo "
    ===== Ende Fehlermeldungen von gestern in /var/log/everything/ ==========
    
    
    
    
    ===== Begin Fehlermeldungen von gestern in /var/log/mail/ ==========
    "
    cat /var/log/mail/log-`date -I`* | grep "`date -d yesterday +"%b %e"`" | grep -i -e fail -e warn -e error
    grep "`date -d yesterday +"%a %b %e"`" /var/log/mail/current | grep -i -e error -e warn -e fail
    echo "
    ===== Ende Fehlermeldungen von gestern in /var/log/mail/ ==========
    Danke für Deine Hilfe.
    Bin auch weiterhin für jeden Tip dankbar


    Gruß Leon
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von leon Beitrag anzeigen
    Code:
    ...
    LC_ALL=en_EN.utf8
    ...
    grep "`date -d yesterday +"%a %b %e"`" /var/log/clamav/freshclam.log
    Das funktioniert aber nur in Deiner konkreten Umgebung, weil hier LC_ALL bereits bekannt und exportiert ist. Wenn die Variable nicht gesetzt ist, dann fehlt wieder ein "export LC_ALL=en_EN.utf8":
    Code:
    jan@jack:~/tmp> bash
    jan@jack:~/tmp> echo $LC_ALL
    
    jan@jack:~/tmp> date +"%a %b %e"
    Sa Mär 15
    jan@jack:~/tmp> LC_ALL=en_EN.utf_8
    jan@jack:~/tmp> date +"%a %b %e"
    Sa Mär 15
    jan@jack:~/tmp> export LC_ALL=en_EN.utf_8
    jan@jack:~/tmp> date +"%a %b %e"
    Sat Mar 15
    jan@jack:~/tmp> exit
    jan@jack:~/tmp> bash
    jan@jack:~/tmp> export LC_ALL=en_EN.utf_8
    jan@jack:~/tmp> date +"%a %b %e"
    Sat Mar 15
    jan@jack:~/tmp> LC_ALL=de_DE.utf8
    jan@jack:~/tmp> date +"%a %b %e"
    Sa Mär 15
    Siehst Du den Unterschied? Wenn LC_ALL einmal exportiert ist, dann kannst Du die Werte ohne erneute export-Anweisung ändern, sie sind dann auch in geforkten Kind-Prozessen bekannt. Ist die Variable aber im Environment nicht vorhanden, dann nutzt ein Setzen ohne export nichts, weil die Variable für die Kindprozesse (wie date) nicht bekannt ist.

    Der saubere Weg ist also, sie im Script immer mit "export LC_ALL=en_EN.utf_8" zu deklarieren. Auf die aufrufende Shell hat das (siehe mein voriges Posting) keinen Einfluss, der export wirkt sich immer nur "nach unten" aus und ist mit dem Ende des Scripts auch wieder vergessen.

    Jan

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.06.2000
    Beiträge
    32
    hallo jan

    Vielen Dank für die super Tips. Habe jetzt alles so umsetzen können das es wunderbar funktioniert und ich es bei bedarf noch ausbauen kann.

    Wünsche noch einen schönen Sonntag



    Gruß Leon
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von leon Beitrag anzeigen
    ...Kann ich das mit der LC_LANG denn dann auch in mein Skript einbauen?
    ...Ich will nicht das das setzen der LC meine Umgebungsvariablen vom Server komplett verhunzen.
    Innerhalb eines Scripts kannst Du problemlos Umgebungsvariablen setzen, das Script wird ja sowieso in einer Subshell ausgeführt, die Variablendefinitionen hier haben keine Auswirkung auf die startende Shell oder gar systemweite Einstellungen. Für Letzteres müsstest Du schon globale Konfig-Dateien wie /etc/profile anfassen. In meinen Beispielen habe ich nur deshalb immer wieder eine Subshell aufgemacht, damit ich verschiedene Einstellungen testen konnte und dann mit dem Verlassen dieser Shell wieder die normale Umgebung habe. Wie gesagt - in einem Script passiert das automatisch - es sei denn, Du "sourcest" es (". /pfad/zum/script" oder "source /pfad/zum/script"), dann wird es in der aktuellen Shell ausgeführt. Dann wirken Umgebungseinstellungen aber auch nur in der aktuellen Shell, nie darüber hinaus.

    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •