G
GreenCream
Grünschnabel
Hallo Leute,
ich bin relativ neu in der Shell und in der Linux-Welt überhaupt.
Jetzt versuche ich gerade ein Script zu schreiben dass mir die Größe eines Backups aus einem Logfile ausliest (um es per snmp abfragen zu können).
Es geht dabei um eine einzige Datei (pro Tag) in der Die Größe und die Art des Backups von ca 30 Rechnern aufgezeichnet wird.
Es gibt für jeden Rechner eine Zeile in der die Größe des Backups steht, und eine Zeile in der Steht was für eine Art von Backup (Full/Incremental) es war. (Ausnahme ist ein Rechner (im Beispiel Rechnerx) für den es nur die Zeile mit der Größe gibt, hier ist es immer ein Full Backup.)
Es kann (an einem Tag) Rechner geben die sowohl ein Full als auch ein Incremental Backup gemacht haben.
So sieht das ganze aus:
Das Ziel ist das script mit dem Parameter "Full" oder "Incremental" aufzurufen und die Summe der geschriebenen Bytes zurückzubekommen.
Ich plage mich jetzt schon ein paar Tage dran und habe schon ne ganze Menge ausprobiert, bin nur nie wirklich weitergekommen. (Auser dass ich schon ein bisschen mehr über shell gelernt habe)
Mein letzter Versuch ging in die Richtung die beiden Zeilen die zu einem Rechner gehören in eine Zeile zu schreiben, dann 2 Dateien draus zu machen, und anschließend mit awk beide Dateien einzeln auszuwerten.
Aber funktionieren tut es genauso wenig.
Ich verwende die sh shell, bash oder tcsh würden auch gehen, wenn es damit einfacher wäre. Pearl nur wenn es sich wirklich nicht vermeiden lässt.
Vieleicht habt ihr ja noch eine ganz andere Idee wie ich sowas anfangen könnte.
Gruß
Benjamin
Edit:
Infos zum System:
openSUSE 10.2 (i586)
VERSION = 10.2
Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006
ich bin relativ neu in der Shell und in der Linux-Welt überhaupt.
Jetzt versuche ich gerade ein Script zu schreiben dass mir die Größe eines Backups aus einem Logfile ausliest (um es per snmp abfragen zu können).
Es geht dabei um eine einzige Datei (pro Tag) in der Die Größe und die Art des Backups von ca 30 Rechnern aufgezeichnet wird.
Es gibt für jeden Rechner eine Zeile in der die Größe des Backups steht, und eine Zeile in der Steht was für eine Art von Backup (Full/Incremental) es war. (Ausnahme ist ein Rechner (im Beispiel Rechnerx) für den es nur die Zeile mit der Größe gibt, hier ist es immer ein Full Backup.)
Es kann (an einem Tag) Rechner geben die sowohl ein Full als auch ein Incremental Backup gemacht haben.
So sieht das ganze aus:
Code:
28.10.2008 Linux backupserver1
Rechner1: Bytes written to media: 182744
Rechner4: Bytes written to media: 52070587
Rechner6: Bytes written to media: 66581055
Rechner2: Bytes written to media: 30104
...
Rechner4: Incremental backup finished.
Rechner6: Incremental backup finished.
Rechner2: Incremental backup finished.
Rechner1: Incremental backup finished.
...
28.10.2008 Linux Backupserver
Rechnerx: Bytes written to media: 30104
Rechner4: Bytes written to media: 52070587
Rechner6: Bytes written to media: 66581055
...
Rechner6: Full backup finished.
Rechner2: Full backup finished.
Rechner4: Full backup finished.
...
Das Ziel ist das script mit dem Parameter "Full" oder "Incremental" aufzurufen und die Summe der geschriebenen Bytes zurückzubekommen.
Ich plage mich jetzt schon ein paar Tage dran und habe schon ne ganze Menge ausprobiert, bin nur nie wirklich weitergekommen. (Auser dass ich schon ein bisschen mehr über shell gelernt habe)
Mein letzter Versuch ging in die Richtung die beiden Zeilen die zu einem Rechner gehören in eine Zeile zu schreiben, dann 2 Dateien draus zu machen, und anschließend mit awk beide Dateien einzeln auszuwerten.
Code:
sort $sizefile | sed ':;s/finished./ finised.EOL/;N;T' | sed ':;s/\n/ /;N;T' | sed ':;s/EOL/ \n/g;N;T' >> tempfile1
grep 'full' tempfile1 > tempfile2
grep 'Incremental' tempfile1 > tempfile3
groese1=$(less tempfile2 | awk '/written/ | $1 {summe += $6} END { printf ("%d",summe)}')
groese2=$(less tempfile3 | awk '/written/ | $1 {summe += $6} END { printf ("%d",summe)}')
Ich verwende die sh shell, bash oder tcsh würden auch gehen, wenn es damit einfacher wäre. Pearl nur wenn es sich wirklich nicht vermeiden lässt.
Vieleicht habt ihr ja noch eine ganz andere Idee wie ich sowas anfangen könnte.
Gruß
Benjamin
Edit:
Infos zum System:
openSUSE 10.2 (i586)
VERSION = 10.2
Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006
Zuletzt bearbeitet: