1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

WLAN Netzwerk bestimmen + Bonusfragen =]

Dieses Thema im Forum "iOS-Developer" wurde erstellt von babaloo, 19.09.08.

  1. babaloo

    babaloo Golden Delicious

    Dabei seit:
    22.08.08
    Beiträge:
    6
    Hi,

    wie kann ich per Applescript (oder sonstwie) ermitteln, ob mein Rechner sich gerade in einem bestimmten WLAN-Netz befindet?

    Hintergrund:
    Auch wenn mein MacBook mal nicht mit auf Reisen geht, möchte ich es von unterwegs aus erreichen können. Das klappt prima mit Jaadu auf dem iPhone, aber logischerweise nur, wenn mein MacBook auch online ist.

    Aber leider verbindet sich meine Time Capsule nach der täglichen Zwangstrennung durch den Provider nicht mehr mit dem Modem. Abhilfe schafft da ein Neustart der Time Capsule. Das habe ich mit Automator realisiert und als Programm "Reconnect" abgespeichert.

    Nun möchte ich alle 5 oder alle 10 Minuten checken lassen, ob mein MacBook auch online ist. Falls nicht, soll Reconnect laufen. Dazu habe ich folgendes Applescript:

    try
    do shell script "curl \"http://apple.com\""
    on error
    run application "Reconnect"
    end try

    Dieses Script möchte ich zum einen erweitern um eine Abfrage nach einem bestimmten Netzwerk. Es soll nämlich nur laufen, wenn sich das MacBook im heimischen Netzwerk befindet und nicht laufend Reconnect starten, wenn ich mit dem MacBook unterwegs bin und keine oder eine andere WLAN-Verbindung habe.

    Außerdem muss ich den ganzen Kram ja irgendwie automatisch alle 5 oder 10 Minuten laufen lassen. Und das möglichst unsichtbar. Wie speichere ich das Ergebnis also ab, damit ich es mit CronniX im entsprechenden Takt starten kann, ohne dass beim Ablauf des Scripts selber sichtbar ein Programm startet? Ausgenommen natürlich vom Fall, dass Reconnect gestartet wird. Das darf ich ruhig mitkriegen. Muss ich das alles vielleicht doch als Shellscript realisieren?

    Hoffentlich könnt ihr mir helfen. Ich bin auch für jede Teilhilfe dankbar. Und wenn jemand eine ganz andere Idee hat, nur her damit!
     
  2. babaloo

    babaloo Golden Delicious

    Dabei seit:
    22.08.08
    Beiträge:
    6
    Problem gelöst. :D

    Falls es jemanden interessiert: Durch Hilfe auf einem anderen Board bin ich auf die Idee gekommen, das Script nicht alle paar Minuten erneut zu starten, sondern es die ganze Zeit laufen zu lassen und ihm nur eine paarminütige Ruhepause zu verdonnern. Das geht mit dem idle-Befehl zusammen mit return (und der Pause in Sekunden).

    Den Netzwerknamen konnte ich (durch die gleiche Hilfe) aus dem System Profiler auslesen.

    Dann musste ich noch kapieren, wie man ein stay open script abspeichert. Man macht einfach einen Haken bei "Nicht automatisch beenden".

    Außerdem speicherte ich das Script nicht einfach als Programm sondern als Programm-Bundle. Dadurch kommt man mit einem Rechtsklick auf das Programm an den Paketinhalt, navigiert zur info.plist und erweitert diese so, dass das Programm unsichtbar läuft. Dazu fügt man der info.plist beispielsweise im Property List Editor das Item "Application is agent (UIElement)" hinzu und macht ein Häkchen dahinter.

    Das fertige Script fügt man dann den Startobjekten hinzu und gut ist. :D

    Hier das Ergebnis (vielleicht kanns ja noch jemand brauchen):
    Code:
    on idle
    	set command to "system_profiler SPAirPortDataType"
    	set output to paragraphs of (do shell script command)
    	set networkname to missing value
    	repeat with |line| in output
    		if |line| contains "Current Wireless Network:" then
    			set colonoffset to offset of ":" in |line|
    			set networkname to (characters (colonoffset + 2) through -1 of |line|) as Unicode text
    		end if
    	end repeat
    	if networkname is "Name des WLAN-Netzwerks" then
    		try
    			do shell script "curl \"http://apple.com\""
    		on error
    			run application "Reconnect"
    		end try
    	end if
    	return 300
    end idle
     
    deckl gefällt das.

Diese Seite empfehlen