Script - Textausgabe nach Wort durchsuchen ...

Bash, Shell, PHP, Python, Perl, CGI
elvis
Posts: 94
Joined: 2004-05-08 20:27
Location: Recklinghausen

Script - Textausgabe nach Wort durchsuchen ...

Post by elvis » 2004-06-27 19:02

Servus,

ich habe mittlerweile ein Shellscript geschrieben, das ReoBack startet und wenn alles in Ordnung ist, mir eine Mail schicken soll wo im Betreff steht "Backup erfolgreich".

Im Moment bin ich so weit :
if /usr/bin/reoback.pl /etc/reoback/settings.conf;
grep "No new" /usr/bin/reoback.pl
then echo "Backup abgebrochen weil es nichts zum backuppen gibt."
else
clear
echo "Backup erfolgreich!"
fi
ReoBack soll gestartet werden und wenn es sagt "No new or change files changed ..." will ich das die Ausgabe von ReoBack danach durchsucht wird und wenn das vorhanden ist, das er echo "Backup abgebrochen weil es nichts zum backuppen gibt." sagt, ansonsten "Backup erfolgreich".

Aber grep durchsucht die Datei *.pl und nicht die Ausgabe. Auch nach langem googeln konnte ich nichts finden.

Wie durchsucht man script-textausgaben nach einem Wort ?

Danke.

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by captaincrunch » 2004-06-27 19:08

/usr/bin/reoback.pl | grep "Was auch immer"
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

elvis
Posts: 94
Joined: 2004-05-08 20:27
Location: Recklinghausen

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by elvis » 2004-06-27 19:31

Danke ... mit ein bischen rumgetüftel klappts genau so wie ich es mir vorgestellt habe.

Und für alle die auch so ein Shellscript wollen, daß -wirklich- überprüft ob das script auch lief und nicht mit einer fehlermeldung abgebrochen wurde, hier das Script :
#!/bin/sh

if /usr/bin/reoback.pl /etc/reoback/settings.conf | grep --silent "No new"
then echo "Backup abgebrochen weil es nichts zu sichern gibt!"
else
echo "Backup wurde erfolgreich durchgeführt."
fi
Was es macht :
Es startet ReoBack, guckt ob Reo meckert das es nix zu sichern gibt, wenn dann kein gemecker gibt sagt es das alles gut lief.

Kann man natürlich noch verfeinern und alle Fehlermeldungen von ReoBack mit reinnehmen so wie wenn man auf einen externen Server sichert. Dann kann man sofort den Status bekommen :

Backup gelaufen ... JA!
Transfer zu Backupserver ... Fehlgeschlagen!

---------

Eine wichtige Frage ... wie verknüpfe ich if Anfragen? Bei VB gings :

if .... then :end if:exit
else
...
else
...

und so weiter. Ich möchte gerne nach 3-4 Fehlermeldungen suchen lassen so das man wirklich sicher ist das es korrekt gelaufen ist.

Wenn das funktioniert mache ich das selbe mit "RKHunter" (suche nach infected, etc.) und evtl. mit dem error_log etc. aber bis dahin ists noch ein langer weg.

Danke schon mal für die Hilfe und Tips.

Elvis

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by captaincrunch » 2004-06-27 19:49

Code: Select all

if FOO then:
do BAR
elif WHATEVER then;
do BLA
fi
Kleiner Tip:
http://tldp.org/LDP/abs/html/index.html
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

elvis
Posts: 94
Joined: 2004-05-08 20:27
Location: Recklinghausen

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by elvis » 2004-06-27 21:55

Hmmm ... klappt noch nicht so dolle :(

Ã?ber die Funktion Kommando1 | Kommando2 übergebe ich doch die Ausgabe von Kommando1 zu Kommando2 ?

Muß ich das jedes mal machen (mit |) ? Oder merkt er sich das?
Und ... gibt es eine Art Debugfunktion so das ich sehe wo er hakt?
[EDIT] Gefunden : sh -x meinscript.sh


Momentan siehts so aus :
#!/bin/sh

#########################################
# Wenn "Archiving backup" & "Unable to login to remote host" #
# gefunden wird, dann das echo ausgeben #
#########################################
if /usr/bin/reoback.pl /etc/reoback/settings.conf | grep "Archiving backup"
then
if grep "Unable to login to remote host"
then
echo "Backup - ok"
echo "FTP - fehlgeschlagen"
fi
fi

#########################################
# Hier weiß ich nicht wie ich das verschachteln soll :( #
#########################################
if grep "Archiving backup"; then
echo "Backup - ok"
else grep "No new"; then
echo "Nichts zum sichern"
fi
So sagt er mir :

./test3_backup.sh: line 14: syntax error near unexpected token `then'
./test3_backup.sh: line 14: `else grep "No new"; then'

*RatlosBin*

Elvis

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by captaincrunch » 2004-06-27 22:28

Probier's mal so (einfach mal schnell aus dem Kopf runtergetippert):

Code: Select all

#!/bin/sh

#########################################
# Wenn "Archiving backup" & "Unable to login to remote host" #
# gefunden wird, dann das echo ausgeben #
#########################################
if /usr/bin/reoback.pl /etc/reoback/settings.conf | grep "Archiving backup"
then
   if grep "Unable to login to remote host"
   then
        echo "Backup - ok"
        echo "FTP - fehlgeschlagen"
    elif grep "Archiving backup"; then
        echo "Backup - ok"
    else grep "No new"; then
        echo "Nichts zum sichern"
    fi
fi
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

elvis
Posts: 94
Joined: 2004-05-08 20:27
Location: Recklinghausen

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by elvis » 2004-06-27 23:11

Da mosert er auch rum :
line 11: syntax error near unexpected token `then'
line 11: ` else grep "No new"; then'
Und wenn ich das ; entferne zeigt er mir folgendes im Debug :
sh -x test3_backup.sh
+ /usr/bin/reoback.pl /etc/reoback/settings.conf
+ grep 'Archiving backup'
Archiving backup...
Und das wars, weiter gehts nicht.

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by captaincrunch » 2004-06-28 08:38

Mist...kann auch nicht gehen, da grep das Ziel fehlt, aus dem es den String suchen soll.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

elvis
Posts: 94
Joined: 2004-05-08 20:27
Location: Recklinghausen

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by elvis » 2004-06-28 09:24

Du meinst das erste | übermittelt an grep, aber nicht an die anderen grep Befehle und deshalb finden die anderen grep die gesuchten Wörter nicht und bleibt stehen?

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script - Textausgabe nach Wort durchsuchen ...

Post by captaincrunch » 2004-06-28 09:50

Genau, daher müsstest du eine Fallunterscheidung direkt im ersten if einbinden.

EDIT: Als quick'n'dirty-Lösung könntest du (z.B.) per "tee" die Ausgaben von reoback in ein File schreiben lassen, und die Strings dann dort ausgreppen.
Alternativ könntest du die if's auch per && (Erfolg) oder || (Misserfolg, oder eher gesagt "oder") verschachteln, was sicherlich die "schönere" Lösung wäre.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc