Ja, es ist bash. Das Tool '
ip' habe ich hier auf OSX Snow Leopard aber nicht.
Ich habe z.B. folgende Ausgaben:
Code:
Last login: Thu
Dec 30 22:58:25 on ttys001
smartair:~ Sebastian$ airport -I
AirPort: Off
smartair:~ Sebastian$ networksetup -setairportpower en0 on
smartair:~ Sebastian$ airport -I
agrCtlRSSI: -59
agrExtRSSI: 0
agrCtlNoise: -95
agrExtNoise: 0
state: running
op mode: station
lastTxRate: 130
maxRate: 144
lastAssocStatus: 0
802.11 auth: open
link auth: wpa2-psk
BSSID: 0:24:fe:44:d0:7b
SSID: smartNet
MCS: 15
channel: 1
smartair:~ Sebastian$
Das heisst hiermit kann ich ermitteln, ob das WLAN an ist, wenn ja wie die SSID ist und die aktuelle Geschwindigkeit (lastTxRate) und die Empfangsqualität (agrCtlRSSI) in
Db.
Welche Geräte welchen sprechenden Namen haben sehe ich hier:
Code:
smartair:~ Sebastian$ networksetup -listnetworkserviceorder
An asterisk (*) denotes that a network service is disabled.
(1) Bluetooth DUN
(Hardware Port: Bluetooth DUN, Device: Bluetooth-Modem)
(2) USB Ethernet
(Hardware Port: USB-Ethernet, Device: en3)
(3) AirPort
(Hardware Port: AirPort, Device: en0)
(4) iPhone
(Hardware Port: iPhone-USB, Device: en2)
(5) Bluetooth PAN
(Hardware Port: Bluetooth PAN, Device: en1)
smartair:~ Sebastian$ networksetup -listnetworkserviceorder | grep Device
(Hardware Port: Bluetooth DUN, Device: Bluetooth-Modem)
(Hardware Port: USB-Ethernet, Device: en3)
(Hardware Port: AirPort, Device: en0)
(Hardware Port: iPhone-USB, Device: en2)
(Hardware Port: Bluetooth PAN, Device: en1)
smartair:~ Sebastian$
Wie man sieht reicht die untere Ausgabe um den sprechenden Namen und den Interface-Namen zu ermitteln.
Hier muss ich dann mit einem folgenden ifconfig die Status ermitteln:
Code:
smartair:~ Sebastian$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 10:93:e9:00:ca:1a
inet6 fe80::1293:e9ff:fe00:ca1a%en0 prefixlen 64 scopeid 0x4
inet 192.168.178.34 netmask 0xffffff00 broadcast 192.168.178.255
media: autoselect
status: active
smartair:~ Sebastian$ ifconfig en1
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 10:93:e9:00:ca:1b
media: autoselect
status: inactive
smartair:~ Sebastian$ ifconfig en2
ifconfig: interface en2 does not exist
smartair:~ Sebastian$ ifconfig en3
ifconfig: interface en3 does not exist
smartair:~ Sebastian$
Wie man sieht ist mein iPhone weder per Bluetooth PAN (en1 - inactive) noch per USB (en2) verbunden, noch ist der externe USB-Ethernet-Adapter (en3) angeschlossen. Hier sollte also jedes mal 'not connected' stehen. Wenn connected (so wie das WLAN en0), so soll die aktuelle IPv4 Adresse, die Geschwindigkeit (sofern ermittelbar) und bei Wifi eben noch die SSID angezeigt werden.
Dazu gibt es dann noch die Liste der aktuell verfügbaren WLAN's, von denen mir die SSID reichen würde, die Signalstärke (RSSI) wäre aber auch cool und ggf. die Security (wobei hier secured bzw. offen reichen würde):
Code:
smartair:~ Sebastian$ airport -s
SSID BSSID RSSI CHANNEL HT
CC SECURITY (auth/unicast/group)
WLAN-3C0C43 88:25:2c:3c:0c:c9 -89 6,-1 Y DE WPA(PSK/TKIP,AES/TKIP) WPA2(PSK/TKIP,AES/TKIP)
smartNet Office 06:24:fe:b6:a6:7a -51 1,+1 Y -- WPA(PSK/TKIP/TKIP) WPA2(PSK/AES/TKIP)
smartNet Studio 06:24:fe:b2:8e:57 -68 1,+1 Y -- WPA(PSK/TKIP/TKIP) WPA2(PSK/AES/TKIP)
smartNet Gast WLAN 06:24:fe:44:d0:7b -48 1,+1 Y -- WPA(PSK/TKIP/TKIP) WPA2(PSK/AES/TKIP)
smartNet 00:24:fe:44:d0:7b -47 1,+1 Y -- WPA(PSK/TKIP/TKIP) WPA2(PSK/AES/TKIP)
smartair:~ Sebastian$
Ich bin im Text parsen noch nicht so bewandert, deswegen weiss ich gar nicht, welche Tools hier die besten sind um die entsprechenden Stellen sauber zu extrahieren.