Aufgrund von SSID Entscheidung treffen

K

krobi

Neues Mitglied
Thread Starter
Dabei seit
01.11.2005
Beiträge
15
Reaktionspunkte
0
Hallo

ich möchte gerne mein bestehendes Applescript erweitern und intelligenter machen

konkret geht es darum das es herausfinden soll mit dem welcher W-Lan SSID mein Airport verbunden ist - falls er überhaupt eine verbindung hat.

bzw ist die frage ob mein macbook mit einem bestimmten wlan verbunden ist - falls überhaupt.

hoffe ihr könnt mir da helfen, hab zwar einiges gefunden aber meist urr-alt lösungen, die irgendwelche extra skripte aufrufen oder sonstwas aber soweit ich gesehen habe wurden in den letzten mac os x versionen hier einiges nachgebessert - daher hätte ich gerne eine "reine" lösung die direkt über die network preferences vl funkt?
 
Verstehe Dein Problem nicht ganz, habe aber mit Scripts auch nichts am Hut. Warum möchtest Du ein Script für etwas, das sich mit einem Alt-Klick auf das AirPort Symbol erledigen lässt?
 
Oh hatte Den Nachsatz nicht gelesen, daß du keine Shellscriptlösung willst. Da die Systemeinstellungen das aber auch nicht direkt hegeben wäre ein Skript über die Systemeinstellungen auf jedem Fall länger und umständlicher.

Im Terminal kannst Du den WLAN-Name über:
Code:
system_profiler SPAirPortDataType |grep Current
bekommen.
Also kannst Du mit
Code:
    set x to do shell script "system_profiler SPAirPortDataType |grep Current"
den String
Code:
Current Wireless Network: MEINEWLANSSID
in x ablegen.
Du musst dann nur noch alles vor dem ":" wegschneiden und feddisch.

Bist Du nicht verbunden bekommst du das:
Code:
Current Wireless Network: wireless network not available
Ist Airport deaktiviert bekommst du folgendes zurück:
Code:
Current Wireless Network: AirPort is currently turned off
Anhand dessen solltest Du ja Problemlos entscheidungen treffen können, wenn Dein WLAN nicht gerade wie eine von den beiden Statusmeldungen heisst. :)

Edit:
ich bin natürlich nicht der erste,hier im Forum der auf die Idee gekommen ist. Hier gibt es ein schönes BSP wo die String gleich schon über awk im Terminal beschnitten wird und man nur die SSID zurückbekommt.
 
Zuletzt bearbeitet:
system_profiler SPAirPortDataType | grep Current
Bei mir funktioniert das nicht. Vielleicht habe ich eine neuere Version als sir.hacks.alot? system_profiler produziert eine mehrzeilige Info zum AirPort-Netzwerk, deshalb liefert dieser Befehl nur die Zeile "Current Network Information:"

Außerdem ist system_profiler verdammt langsam (Sekundenbereich!).
Blitzschnell funktioniert dagegen:
Code:
airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//
sed benutze ich, da ich mich mit awk überhaupt nicht auskenne.
In AppleScript natürlich wieder mit set mySSID to do shell script "..." einbinden.

Ist man nicht verbunden, liefert es einen leeren String.
 
hey danke für die vielen antworten hier mal mein feedback, hab auch vergessen ich nutze natürlich mac os 10.6 (10.6.6.)
wenn ich
system_profiler SPAirPortDataType |grep Current
verwende dann bekomme ich nur folgendes zurück
Current Network Information:
thats it, kein netzwerkname nichts obwohl ich verbunden bin.

wenn ich
airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//
im terminal eingebe bekomm ich nur
-bash: airport: command not found
zurück.

wenn ich
set SSID to do shell script "system_profiler SPAirPortDataType | grep 'Current Wireless Network' | awk '{ print $4 }'"
if SSID = "krobisnet" or SSID = "franyisnet" then tell application "iTunes" to updateAllPodcasts
aus dem podcasts via apple script usw ausprobiere bekomm ich kein ergebnis zurück (die ssid namen währe die um die es ginge)

und
tell application "Internet Connect" to set SSID to network name of configuration "AirPort"
if SSID = "Uni-Bremen" or SSID = "ElternSSIDNAME" then tell application "iTunes" to updateAllPodcasts
auch aus dem anderen thread geht garnicht - bekomm dann im applescript editor nur er kennt "internet connect" nicht.
 
wenn ich
airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//
im terminal eingebe bekomm ich nur
-bash: airport: command not found
zurück.
Oh, es kann sein, dass das Kommandozeilen-Programm airport mit den Developer Tools (bzw. Xcode Tools) installiert wird. Probier mal, ob's mit /usr/sbin/airport geht.

EDIT: nee, Quatsch, doch nicht /usr/sbin... hab's gegoogelt. Das Kommandozeilen-Tool airport ist unter
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources
Der Befehl zum Abfragen der SSID wäre damit also
Code:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//
 
Verstehe Dein Problem nicht ganz, habe aber mit Scripts auch nichts am Hut. Warum möchtest Du ein Script für etwas, das sich mit einem Alt-Klick auf das AirPort Symbol erledigen lässt?

Warum zur Hölle schreibst Du dann in diesen Thread was rein? Echt, von solchen Usern krieg ich das ko**en.

Ich finde die Idee von krobi interessant und für den ein oder anderen User bestimmt praktisch.
 
System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//

yuhu damit bekomm ich mein verbundenes wlan bzw die ssid heraus supi. werd damit mal weiterspielen

edit: so nochmal ne frage, wie kann ich den quote jetzt richtig mit den anführungszeichen ins applescript reingeben

set myssid to do shell script "System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//""
if myssid contains "krobsinet" or "franyisnet" then
mach weiter ;-)
end if

so mag er das nicht und bevor ich stundenlang rumrate - kenn das von php programmierung wenn man html oder ähnliches sachen einbaut da gibt immer gerne probs wenn man es ned blind kann ;-)
 
Zuletzt bearbeitet:
Ich hänge meinen Thread hier mal dran, weil ich eine ähnliche Idee habe und daher vielleicht hier fündig werde.

Kurz die Idee: Wenn ich die Wireless BT Tastatur von Apple an der rechten Seite ausschalte und damit die Verbindung zur Tastatur verloren geht, will ich, dass der Mac Pro runterfährt. Das muss doch mit einem Script machbar sein, oder?

https://www.macuser.de/forum/f30/wireless-keyboard-ausschalten-319411/
 
so nochmal ne frage, wie kann ich den quote jetzt richtig mit den anführungszeichen ins applescript reingeben
set myssid to do shell script "System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w "SSID" | sed s/" *SSID: "//""
so mag er das nicht
Er mag es nicht, weil Anführungszeichen im Shell-Befehl vorhanden sind. Ersetze sie durch einfache Anführungszeichen:
Code:
set myssid to do shell script "System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w 'SSID' | sed s/' *SSID: '//"
 
supi jetzt nimmt er es aber jetzt das nächste problem
set myssid to do shell script "System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep -w 'SSID' | sed s/' *SSID: '//"
if myssid contains "krobsinet" or "franyisnet" then
get myssid
end if

ich befinde mich momentan im krobsinet und bekomm wenn ich das script ausführe folgenden fehler
error "\"franyisnet\" kann nicht in Typ boolean umgewandelt werden." number -1700 from "franyisnet" to boolean

find ich irgendwie unlogisch ich frag ihn ja ob das oder das drin steht warum jammert er dann jetzt?
 
error "\"franyisnet\" kann nicht in Typ boolean umgewandelt werden." number -1700 from "franyisnet" to boolean
krobi, ich empfehle Dir, Dich erstmal ein wenig in AppleScript einzulesen, bevor Du kompliziertere Sachen programmierst. Ein schönes kostenloses Buch ist "AS für AS" (AppleScript für Absolute Starter) von Peter Fischer, hier als PDF:
http://www.fischer-bayern.de/applescript/html/ebook.html

Die Fehlermeldung kommt, weil der or-Operator, der nur boolean-Werte (Wahrheitswerte) verknüpfen kann, zwischen zwei Zeichenketten steht. AS versucht dann vergeblich, die Zeichenkette in ein boolean umzuwandeln, und das erzeugt den Fehler.

Korrekter Code:
Code:
if ("krobsinet" is in myssid) or ("franyisnet" is in myssid) then
	get myssid
	...
end if

EDIT: noch eleganter:
if myssid is in {"krobsinet", "franyisnet"} then ...
 
supi thx, werd ich mir durchlesen.

if ("krobsinet" is in myssid) or ("franyisnet" is in myssid) then
scheint nicht zu funktionieren weil ich false zurückbekomme

wenn ich so schreibe
if myssid contains "krobisnet" or myssid contains "franyisnet" then
gibs keine fehlermeldung ich bekomm true zurück - bin ja im krobisnet, werd jetzt mal mitn anderen netz probieren

edit: funktioniert wunderbar, erkennt beide netze bzw gibs mir wahrheitsgemäß true und false zurück
 
Zuletzt bearbeitet:
Zurück
Oben Unten