Agnes Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Hi allerseits, ich habe ein paar Dinge, die ich per Shell Script lösen soll. Zunächst folgendes: Ich erzeuge per Skript eine Datei, in die z.B. reingeschrieben wird "nicht verfügbar", aber auch anderes. Ich will nun diese Datei (return.log heißt se) nach diesem Striing "nicht verfügbar" durchsuchen. Wird ein solcher String gefunden, das kann auch mehrmals sein, sollen alle entsprechenden Zeilen in eine Datei return$timestamp.log geschrieben werden. Das mit dem Timestamp und das Anlegen der Datei krieg ich hin. Ich weiß nur nicht genau wie ich nur die der Suche entsprechenden Zeilen da rein kriege (sicher irgendwie mit >> oder >). Und das suchen geht bestimmt mit grep, aber wie genau? Weiterhin soll, wenn der String "nicht verfügbar" NICHT gefunden wurde, in eine neue Datei (z.B. returnrc.log) der aktuelle Timestamp und der Satz "alle Systeme verfügbar" geschrieben werden. Könnt ihr mir dabei helfen? Wäre echt super! Danke schonmal! Zitieren
bigvic Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Poste doch einfach mal den Code den du hast bzw. was du schon versucht hast. Zitieren
Agnes Geschrieben 19. Januar 2010 Autor Geschrieben 19. Januar 2010 okay, das mit dem Suchen des Strings hab ich auch schon: OUTPUT_DIR="/archive/lib/icmadmin"; OUTPUT_FILE="return.log"; location=wlp1prod user=wlpftp pw=wlpftp db2 -a +o connect to $location user $user using $pw b="$?" if [ "$b" = 0 ]; then print "$location verfügbar" >> $OUTPUT_FILE elif [ "$b" > 0 ]; then print "$location nicht verfügbar" >> $OUTPUT_FILE fi timestamp=$(date '+%Y%m%d-%H:%M:%S') errors=$(grep "nicht verfügbar" return.log | wc -l) echo $errors cp return.log return$timestamp.log so und jetzt fehlt jetzt quasi, if $errors > 0, then schreibe die Zeilen mit "nicht verfügbar" in Datei return$timestamp.log Zitieren
Agnes Geschrieben 19. Januar 2010 Autor Geschrieben 19. Januar 2010 Aktualisierung: inzwischen klappen nur 2 Dinge noch nicht: die Ausgabe des grep von errors2 ins Nichts umleiten irgendwas mit der Definition von $ERROR_FILE der Rest des Skripts ist hier unwichtig: timestamp=$(date '+%Y%m%d-%H:%M:%S') touch return$timestamp.log $ERROR_FILE=return$timestamp.log errors=$(grep "nicht verfügbar" return.log | wc -l) errors2=`grep "nicht" return.log >nul` ###echo $errors2 echo $errors if [ "$errors" > 0 ]; then print "$errors2" >> $ERROR_FILE elif [ "$errors" = 0 ]; then print "$timestamp : Alle Systeme verfügbar" >> $OUTPUT_FILE2 fi Zitieren
schepp Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Dein Error-Problem: Zeile 3 das $ am Anfang muss weg vor ERROR_FILE. Ins "Nichts" umleiten: Eigentlich sollte die Zeile so gar keinen Output erzeugen: errors2=`grep "nicht" return.log` Wenn du sichergehen möchtest leite es nach /dev/null um. Also: errors2=`grep "nicht" return.log > /dev/null` Gruß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.