Applescript. Pingen, um zu sehen, ob eine Internetverbindung besteht oder nicht, bevor eine E-Mail gesendet wird.

ChangeAgent

Mitglied
Thread Starter
Dabei seit
25.03.2007
Beiträge
45
Reaktionspunkte
4
Mein Server sendet viele E-Mails über Applescript. Aber ich bekomme Fehler in Mail, dass das Netzwerk nicht verfügbar ist. Ich vermute, der Computer schläft und Mail versucht, die Mail zu senden, bevor eine Netzwerkverbindung hergestellt wird (fest Netzwerk Verbindung, kein WIFI).

Ich habe das folgende Skript gefunden.

repeat until (do shell script "/sbin/ping -c1 www.google.com") contains "0% packet loss"
delay 5 -- This will run the ping at 5 second intervals until there's no packet loss.
end repeat

Dies scheint jedoch nicht richtig zu funktionieren. Ich erkläre. Wenn ich es mit einer nicht vorhandenen Adresse ausführe, wird es nicht weiter ausgeführt, sondern Generiert den folgenden Fehler.

tell current application
do shell script "/sbin/ping -c1 www.gle.com"
--> error "PING www.gle.com (34.206.12.234): 56 data bytes

--- www.gle.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss" number 2
Result:
error "PING www.gle.com (34.206.12.234): 56 data bytes

--- www.gle.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss" number 2​

The error box states:

PING www.gle.com (34.206.12.234): 56 data bytes

--- www.gle.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss


Ich habe dies entdeckt, da ich manchmal Fehler im Skript bekomme, die diese Meldung meldet.

Wenn ich es mit getrenntem Netzwerk ausführe (Computer abgekoppelt von mein Netzwerk), bekomme ich:

tell current application
do shell script "/sbin/ping -c1 www.goole.com"
--> error "ping: cannot resolve www.goole.com: Unknown host" number 68
Result:
error "ping: cannot resolve www.goole.com: Unknown host" number 68​

Ich hoffe, die Informationen reicht, damit Sie meine Frage beantworten können.

Was ich erreichen möchte, ist, dass es prüft, ob ich eine Netzwerkverbindung habe, und dies so lange tut, bis es diese Verbindung hat, und dann den Rest des Skripts ausführt.

Irgendeine Idee, wie man das behebt?
 
Du mußt in deinem Skript den Fehler selbst abfangen und behandeln, damit nicht gleich das komplette Skript beendet wird. Such ggf. mal nach

Apple Script error handling
 
danke, hab ich schon, kann es nicht finden.
 
Das aufgerufene shell script liefert einen Return-Wert ungleich 0, wenn der Ping nicht erfolgreich war. AppleScript wertet dies als Fehler. Diesen Fehler mußt du in deinem AppleScript abfangen. Dadurch geht der Fehler nicht grundsätzlich weg, aber durch das Abfangen verhinderst du, dass dein Skript beendet wird.
 
Zurück
Oben Unten