WLAN Netzwerk bestimmen + Bonusfragen =]

babaloo

babaloo

Aktives Mitglied
Thread Starter
Dabei seit
09.03.2003
Beiträge
1.602
Reaktionspunkte
82
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:
Code:
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!
 
Hallo babaloo,

ich benutze Mac OS X 10.5 und kann den gerade benutzten WLAN-Netzwerknamen per AppleScript wie folgt auslesen:

Code:
on run
	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
	return networkname
end run

Ich würde an Deiner Stelle das fertige Skript als sogenanntes «Stay Open»-Skript speichern, das sich selbst alle paar Minuten aufruft (z.B. on idle...return 300...end idle).

Wenn Du willst, daß das Skript im Hintergrund läuft, kannst Du es mal mit Drop Script Backgrounder probieren.
 
Hey, cool,

das mit dem Namen des Netzwerks funktioniert. :D

Und den Drop Script Backgrounder werd ich gleich ausprobieren. Aber schon mal Tausend Dank!!!
 
Hi Martin,

es klappt super (soweit ich das sagen kann - bislang gab es noch keine Zwangstrennung). Neben deinem Tipp, den System Profiler auszulesen, war es vor allem der Tipp mit der idle-Zange, der mir geholfen hat. Denn so kann ich das Script ja durchweg laufen lassen und muss es gar nicht andauernd starten (über einen cron-job oder ähnliches). Sehr schön.

So konnte ich die ganze Nummer in ein recht kleines und übersichtliches Script verpacken. Bei einer schnellen Internetrecherche zu Stay-Open-Scripts bin ich dann auch auf den Hinweis gestoßen, beim Speichern des Scripts einen Haken bei "Nicht automatisch beenden" zu machen. Wär ich nie drauf gekommen.

Und der Hinweis mit dem Backgrounder hat mir auch sehr geholfen (obwohl ich das Programm nie benutzt habe). Ursprünglich wollte ich nämlich selbst etwas am Script hacken, um es unsichtbar laufen zu lassen. Dazu verändert man einfach die info.plist eines Programms. Als ich mein erstes Testscript aber als Programm abgespeichert hatte, gab es bei einem Rechtsklick darauf gar nicht die Möglichkeit, sich den Paketinhalt zeigen zu lassen. Dann kommt man aber auch an keine plist und kann somit nichts ändern.

Als ich auf der Webseite von Drop Script Backgrounder aber las, dass die das genau so machen, habe ich mich noch mal dem Scripteditor zugewandt und festgestellt, dass es ja auch die Möglichkeit gibt, ein Script als Programm-Bundle zu speichern. DANN klappt es auch mit dem Paketinhalt und DANN klappt es auch mit der plist.

Alles in allem habe ich jetzt nicht nur ein (hoffentlich) funktionierendes Script, sondern auch noch ne Menge gelernt. Ich danke dir tausendfach !!! :cake:
 
Alles in allem habe ich jetzt nicht nur ein (hoffentlich) funktionierendes Script, sondern auch noch ne Menge gelernt. Ich danke dir tausendfach !!! :cake:

Hallo babaloo,

schön, daß ich Dir helfen konnte :) Es ist einfach immer wieder toll zu sehen, was mit AppleScript und Co. auf dem Mac mittlerweile alles möglich ist.

Wenn Du Dich mal etwas tiefer mit AppleScript beschäftigen möchtest, dann empfehle ich das Buch «AppleScript: The Definitive Guide» von Matt Neuburg. Mir hat es sehr geholfen :D

Beste Grüße aus Bielefeld!
 
Zurück
Oben Unten