Hilfe bei einem Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Phoenix
Beiträge: 227
Registriert: 25.01.2003 14:54:21
Wohnort: Niederrhein

Hilfe bei einem Script

Beitrag von Phoenix » 23.05.2003 13:55:55

Hallo,

Ich bin dabei mein erstes Script zu schreiben und habe eigentlich nicht so recht die Ahnung. ;)

Folgendes soll passieren:

Mein Script soll fetchmail starten, 1 Minute warten und danach die Mailqueue versenden.

Hintergrund ist der das ich durch das Abholen mich beim E-Mail Provider anmelde und danach erst meine Mails versenden kann.

Mein Ansatz sieht so aus

Code: Alles auswählen

#!/bin/sh
log=/home/andy/mail/transport.log
/usr/bin/fetchmail -f /home/andy/.fetchmailrc -i /home/andy/.fetchids >> $log
sleep 1m
/usr/sbin/postfix flush
Jetzt gibt es das Problem das ich Postfix flush nur als root starten kann und meine fetchmailrc von root nicht genutzt werden kann da die Datei andy gehört.

Habe ich sonst etwas nicht bedacht? Für Tipps und Tricks bzw. Erläuterungen bin ich sehr dankbar.
OS: Debian SID

--- Alles wird gut ;) ---
MfG Andy

Benutzeravatar
kox666
Beiträge: 393
Registriert: 14.12.2002 20:35:34
Wohnort: Nähe Leverkusen...
Kontaktdaten:

Re: Hilfe bei einem Script

Beitrag von kox666 » 23.05.2003 14:17:50

Hallo,

Ich bin dabei mein erstes Script zu schreiben und habe eigentlich nicht so recht die Ahnung. ;)

Folgendes soll passieren:
Phoenix hat geschrieben:Mein Script soll fetchmail starten, 1 Minute warten und danach die Mailqueue versenden.
Ich verstehe nicht, warum das Skript eine Minute warten soll ? Das kann doch alles parallel geschehen, da alles was in der Mailqueue ist, sowieso sofort versendet wird (vorausgesetzt, dass das Internet da ist)
Phoenix hat geschrieben:Hintergrund ist der das ich durch das Abholen mich beim E-Mail Provider anmelde und danach erst meine Mails versenden kann.
Versendest du die Mails über deinen Provider, oder über irgendeinen Relayserver ??? sonst kannst du mit dem Befehl :

Code: Alles auswählen

fetchmail -d 600
... fetchmail auch als Daemon laufen lassen, so mache ich das bei mir ;)

Gruß Marco
Computer sind nichts anderes als in Silizium geätzte Heimtücke!
- Michael Rüttger

Benutzeravatar
Phoenix
Beiträge: 227
Registriert: 25.01.2003 14:54:21
Wohnort: Niederrhein

Beitrag von Phoenix » 23.05.2003 19:11:12

Hallo kox666,

Im Moment läuft fetchmail als Daemon das Problem entsteht wenn ich mutt E-Mails versende werden die sofort versand. Wenn ich mich vorher aber bei meinem E-Mail Server authentifiziert habe werden die E-Mails nicht angenommen. Deswegen hatte ich auch schon diesen Beitrag geschrieben.

Der Wert von 1m ist willkürlich gewählt, ich möchte aber sicherstellen dsa fetchmail fertig ist.
OS: Debian SID

--- Alles wird gut ;) ---
MfG Andy

Benutzeravatar
Phoenix
Beiträge: 227
Registriert: 25.01.2003 14:54:21
Wohnort: Niederrhein

Beitrag von Phoenix » 25.05.2003 21:26:59

OK, ich hab jetzt etwas ähnliches im Internet gefunden, abgeändert und angepasst.
Das ganze habe ich nach etws Testerei doch in zwei Scripte aufgeteilt.

Script 1 holt meine Emails per fetchmail ab, es ist ein einfacher Einzeiler

Code: Alles auswählen

/usr/bin/fetchmail -s -f /home/andy/.fetchmailrc -i /home/andy/.fetchids >> /home/andy/mail/fetchmail.log
Fetchmail hätte ich ja als Damon laufen lassen können, ich habe es aber vorgezogen per Crontab ablaufen zu lassen, da ich mir dann sicher bin das es syncron zum zweiten Script läuft.
Der Eintrag meiner Crontab sieht so aus

Code: Alles auswählen

andy ~ $ crontab -l
*/15 * * * *	/etc/scripte/fetchmail.sh
Also alle 15 m soll er die Mails abholen.

Script 2 kümmert sich um das versenden, da der Befehl nur von root ausgeführt werden darf habe ich einen Eintrag in die /etc/crontab vorgenommen.

Code: Alles auswählen

#---Mails versenden wenn welche in der mailq liegen---#

if [ "$(mailq)"  != "Mailq is empty" ]; then # Kurze Erklärung: wenn der Befehl mailq nicht die Meldung ausgibt "Mailq is empty"; dann verschicke die Mails ;)
        /usr/sbin/postfix flush
fi
exit 0
Der crontab Eintrag

Code: Alles auswählen

1-59/15 *  * * *        root    /etc/scripte/postfix.sh
Es wird in der 1 Minute einer Stunde gestartet und danach alle 15 min wieder (Ist das so richtig??? Bin mir nicht ganz sicher ;)) Also immer eine Minute nachdem die Post geholt wurde.

Ich hoffe das hilft den einen oder anderen.
Eine Frage habe ich aber noch, kann ich in der Crontab irgendwie angeben das er das script starten soll sobald der Rechner hochgefahren ist?
OS: Debian SID

--- Alles wird gut ;) ---
MfG Andy

Antworten