Zum Inhalt springen

diverse Shell Script Fragen


Agnes

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...