exit code nicht durchreichen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Huck Fin
Beiträge: 1210
Registriert: 10.03.2008 17:10:30

exit code nicht durchreichen

Beitrag von Huck Fin » 16.06.2009 19:44:40

Hi,
hab fetchmail als systemdienst laufen und in der fetchmailrc rufe ich in der letzten Zeile mit

Code: Alles auswählen

postconnect /etc/mailvir
ein script auf.

Dieses Script funktioniert bei manuellem Start sehr gut, aber in diesem Fall, wo
es von fetchmailrc aufgerufen wird, stimmt der exit code nicht.

Das Script mailvir:

Code: Alles auswählen

#!/bin/bash
clamscan -r /home/uwe --move /home/viren -i -l /etc/po1
if [ $? -ne 0 ]
then
mail -s 'Achtung Virus in Mail' uwe < /etc/po1
fi
Starte ich das Script manuell bekomme ich keine Meldung, es sei denn ein Virus wird gefunden.
Startet es über fetchmailrc kommt immer eine Meldung, dass ein Virus gefunden wurde.
Was muss ich ändern, damit das läuft ?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: exit code nicht durchreichen

Beitrag von gms » 16.06.2009 20:26:14

wenn $? nach dem Aufruf von clamscan einen Fehler enthält, dann gibt es sicherlich einen Grund dafür
zum Testen versuche einmal dieses Script:

Code: Alles auswählen

#!/bin/bash
clamscan -r /home/uwe --move /home/viren -i -l /etc/po1 &>/etc/po1.log
if [ $? -ne 0 ]
then
mail -s "Achtung Virus in Mail: Exit Code: $?" uwe <<EOF
$(cat /etc/po1.log)
$(cat /etc/po1)
EOF
fi
PS: das /etc Verzeichnis sollte nicht mit Logdateien zugemüllt werden, die solltest du je nach Bedarf z.B nach '/var/log' oder '/tmp' verfrachten

Gruß
gms

Benutzeravatar
Huck Fin
Beiträge: 1210
Registriert: 10.03.2008 17:10:30

Re: exit code nicht durchreichen

Beitrag von Huck Fin » 16.06.2009 21:57:50

Also...
hab jetzt mal eingestellt, dass immer ne Mail mit Exit code kommt.
Also so

Code: Alles auswählen

#!/bin/bash
clamscan -r /home/uwe --move /home/viren -i -l /etc/po1 &>/etc/po1.log
if [ $? -ne 0 ]
then
mail -s "Achtung Virus in Mail: Exit Code: $?" uwe <<EOF
$(cat /etc/po1.log)
$(cat /etc/po1)
EOF
fi
mail -s "exit code: $?" uwe <<EOF
Er kommt immer ne Mail mit Exit Code 0
Sowohl mit Virus, als auch ohne.
Sowohl über Fetchmail als auch manuell.

Nur...
Wenn ich manuell starte, kommt halt noch ne zweite Mail, wenn ein Virus da ist wegen der Zeile oben
mail -s "Achtung.....

Ich steh echt auf der Leitung ...

Sorry, Korrektur...

Code: Alles auswählen

#!/bin/bash
clamscan -r /home/uwe --move /home/viren -i -l /etc/po1 &>/etc/po1.log
mail -s "exit code: $?" uwe <<EOF
if [ $? -ne 0 ]
then
mail -s "Achtung Virus in Mail: Exit Code: $?" uwe <<EOF
$(cat /etc/po1.log)
$(cat /etc/po1)
EOF
fi
Hab das mit der Mail mal berichtigt, innerhalb des if..fi
Jetzt kommt (wenn man manuell startet)
mitVirus - exit code 1
ohne virus exit code 0

und wenn fetchmailrc das script startet immer exit code 1

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: exit code nicht durchreichen

Beitrag von gms » 17.06.2009 07:11:27

Huck Fin hat geschrieben: Sorry, Korrektur...

Code: Alles auswählen

#!/bin/bash
clamscan -r /home/uwe --move /home/viren -i -l /etc/po1 &>/etc/po1.log
mail -s "exit code: $?" uwe <<EOF
if [ $? -ne 0 ]
then
mail -s "Achtung Virus in Mail: Exit Code: $?" uwe <<EOF
$(cat /etc/po1.log)
$(cat /etc/po1)
EOF
fi
Hab das mit der Mail mal berichtigt, innerhalb des if..fi
beide Anpassungen von dir sind fehlerhaft. Beachte den ersten 'mail' Aufruf mit dem '<<EOF' dahinter. Es wird also alles bis zum EOF in der vorletzten Zeile als Eingabetext betrachtet, auch der Anfang der 'if' Anweisung. Nach diesem ersten 'mail' Aufruf, kommt also ein 'fi' ohne vorherigem 'if'

Was steht eigentlich in der Datei /etc/po1.log ?

Benutzeravatar
Huck Fin
Beiträge: 1210
Registriert: 10.03.2008 17:10:30

Re: exit code nicht durchreichen

Beitrag von Huck Fin » 17.06.2009 09:59:12

Hi,
also ich lass das ganze als Cronjob nun laufen.
Da geht es wunderbar.

Ich vermute als Systemdienst fehlen Berechtigungen für
diverse Verzeichnisse ?
Fetchmail läuft da nämlich als User Fetchmail.

Antworten