scriptbefehle nacheinander ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ulrich_th
Beiträge: 184
Registriert: 15.05.2003 09:30:11
Wohnort: Krefeld

scriptbefehle nacheinander ausführen

Beitrag von ulrich_th » 01.07.2004 18:09:35

Hi, hoffe ich bin hier richtig, die Frage erscheint mir zwar banal, aber mein "erstes" Script sollte so aussehen:

Code: Alles auswählen

#!/bin/bash
pon <provider>
fetchmail
poff
mutt
Dabei sollen die Schritte schön nacheinander ablaufen.
Laut Doku habe ich dann auch noch ein && versucht zwischen den Befehlen, aber auch da tut's nicht, was es soll. (was es soll, ist glaube ich ersichtlich, oder)
Was es tut ist: Die Prozesse werden zwar nacheinander angeworfen, aber ohne das Ende des vorhergehenden abzuwarten. Sprich: fetchmail startet, während die Verbindung noch nicht steht. Mutt startet, während fetchmail läuft, d.h. ich sehe die Meldungen von fetchmail nicht, etc...
Was mache ich falsch???

Ulrich

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.07.2004 18:46:54

Bist du sicher, dass du "&&" und nicht "&" geschrieben hast?

Code: Alles auswählen

 pon ... && fetchmail && poff && mutt
sollte funktionieren (alles in einer Zeile, oder durch \ escaped:

Code: Alles auswählen

pon ... && \
fetchmail && \
...
Edit: OK, ich sehe, wo das Problem liegt. pon kehrt sofort zurück, und wartet nicht erst ab, ob die Verbindung aufgebaut wurde.
Du könntest versuchen, mittels plog zu schauen, ob eine Verbindung besteht, z.b .mit

Code: Alles auswählen

pon ... && ( while [  -n `plog|grep "remote IP"` ]; do sleep 1; done) && ...

oder, einfacher: ifconfig nach ppp0 durchsuchen:

Code: Alles auswählen

 while [ ! /sbin/ifconfig ppp0 ]; do sleep 1; done
Edit2: OK, Patricks Lösung ist dann doch vorzuziehen
Zuletzt geändert von Joghurt am 01.07.2004 18:58:23, insgesamt 2-mal geändert.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.07.2004 18:47:05

pon stösst nur einen grösseren prozess im Hintergrund an, und beendet sich bevor die Verbindung steht. Insofern werden Deine Befehle also bereits alle nacheinander ausgeführt, verhalten sich aber nicht so, wie Du es erwartest.

Simpler Hack: "sleep 10" nach dem pon einfügen, dann wartet er 10 Sekunden, bevor es weitergeht.

"Richtige" Lösung: setze ein Skript, dass den fetchmail abruf erledigt in /etc/ppp/ip-up.d, so dass es bei der Einwahl ausgeführt wird. Wenn Du jetzt nur eben Mails checken willst, kannst Du einfach "pon -q provider" machen. -q heisst "quick" und beendet die Verbindung, sobal alle ip-up.d Skripte gelaufen sind.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

ulrich_th
Beiträge: 184
Registriert: 15.05.2003 09:30:11
Wohnort: Krefeld

Email abruf-script

Beitrag von ulrich_th » 01.07.2004 23:32:10

Danke schonmal für die schnellen Antworten.
&& hatte ich , allerdings nicht alles in einer Zeile

1. edit ergibt ./email: [: /sbin/ifconfig: unary operator expected (da muss ich wohl erstmal mich mit scripten beschäftigen

2. edit ergibt: tail: /var/log/syslog: Keine Berechtigung

3. edit: mit sleep 10 geht's, aber poff unt mutt werden nicht angeworfen

4. fetchmail in ip-up.d wollte ich nicht, da ich nicht automatisch bei jedem ip-up emails downloaden möchte.

Werde mich erst in ein paar Tagen wieder damit beschäftigen können (bis dahin gehe ich erstmal nach meinem procmail -Problem googeln.... ;-)

Ulrich

Antworten