2012-11-05 7 views
5

Ich habe einen Automator-Workflow zum Pingen eines Servers und lade die neueste Kopie eines Zeitplans herunter, den ich häufig verwende. Dieser Zeitplan wird dann in meine Dropbox kopiert, damit ich sie auf meinem Telefon anzeigen kann. Bevor der Workflow den neuesten Zeitplan herunterlädt, löscht er den alten Zeitplan aus der Dropbox.Suchen Sie nach aktiver Internetverbindung mit Applescript/Automator

Das funktioniert gut, außer wenn ich keine aktive Internetverbindung habe. Wenn ich keine aktive Internetverbindung habe, wird der Workflow Dropbox öffnen, den alten Zeitplan löschen und versuchen, den neuesten zu laden. Da keine Verbindung besteht, wird nichts heruntergeladen. Wenn meine Verbindung aktiv wird, wird die leere Dropbox synchronisiert und der Zeitplan wird von meinem Telefon gelöscht.

Ich versuche ein paar Zeilen AppleScript-Code hinzuzufügen, um einen Server zu pingen, um zu sehen, ob ich eine aktive Verbindung habe. Wenn nicht, warten Sie ca. 5 Sekunden und pingen Sie erneut. Ich möchte 5 Ping-Versuche haben und an diesem Punkt, wenn ich noch keine aktive Verbindung habe, möchte ich ganz aufhören.

Ich bin sehr neu zu applescript, also bin ich hängen auf, wie man einen Fehler von einem Befehl behandelt, in diesem Fall der Ping. Wenn der Befehl "ping -o www.apple.com" fehlschlägt, warten Sie 5 Sekunden und wiederholen Sie den Ping. Wenn 5 fehlgeschlagene Versuche dann vollständig beendet werden.

+0

Vielleicht könnten Sie etwas Code für andere veröffentlichen? Bitte überprüfen Sie auch, wie Sie die Markdown-Formatierung verwenden. Dies ermöglicht es Ihnen, den Ping-Befehl oben in einer Schriftart mit einem festen Abstand zu formatieren - der Hilfe-Link auf der rechten Seite der Edit-Box bietet eine gute Zusammenfassung – marko

+0

danke für den Rat. Ich bin neu in stackoverflow, also werde ich das für die Zukunft im Hinterkopf behalten. Die Antwort unten ist genau das, was ich brauchte, also muss ich jetzt nichts posten. –

Antwort

4

Vielleicht so etwas?

repeat with i from 1 to 5 
    try 
     do shell script "ping -o www.apple.com" 
     exit repeat 
    on error 
     delay 5 
     beep 
     if i = 5 then error number -128 
    end try 
end repeat 
say "Connected" 
3

Das obige Skript verursacht Applescript Automator zu hängen, wenn eine Domäne nicht verfügbar ist. Es funktioniert gut in AppleScript Editor, wenn Sie -t X hinzufügen, wobei X eine Anzahl von Sekunden ist, die Ping sollte Timeout, sonst wird es auch unbegrenzt hängen.

repeat with i from 1 to 2 
    try 
     do shell script "ping -o -t 2 www.googleasda.com" 
     exit repeat 
    on error 
     say "Couldn't connect" 
     delay 2 
     say "Error after delay 5" 
     beep 
     if i = 2 then error number -128 
    end try 
end repeat 
say "Connected"