- Registriert
- 16.11.05
- Beiträge
- 257
Hi,
das hat mich schon lange gestört, dass mein W-Lan nicht automatisch deaktiviert wird wenn ich ein Lan Kabel anschließe. Jetzt habe ich endlich eine Lösung für das "Problem" gefunden: Auto-disable AirPort when ethernet is active
Ich habe das Skript jetzt eine Zeit laufen gehabt und es hat soweit funktioniert. Leider wird hin und wieder das W-Lan für kurze Zeit eingeschaltet. Es scheint also man da noch was verbessern kann. Kennt sich zufällig jemand damit aus?
[edit]
Ich habe ein paar Probleme identifizieren können:
Falls die Quelle verschwindet hier die Anleitung wie das Skript zu installieren ist:
das hat mich schon lange gestört, dass mein W-Lan nicht automatisch deaktiviert wird wenn ich ein Lan Kabel anschließe. Jetzt habe ich endlich eine Lösung für das "Problem" gefunden: Auto-disable AirPort when ethernet is active
Ich habe das Skript jetzt eine Zeit laufen gehabt und es hat soweit funktioniert. Leider wird hin und wieder das W-Lan für kurze Zeit eingeschaltet. Es scheint also man da noch was verbessern kann. Kennt sich zufällig jemand damit aus?
[edit]
Ich habe ein paar Probleme identifizieren können:
- /Library/Scripts/ sehe ich immer wieder in der Konsole die Meldung das toogleAirport.sh nicht gefunden werden konnte obwohl es existiert. Vermutlich stimmen hier die Rechte nicht. Wie müssten die sein?
- /var/tmp/ existiert in OSX 10.11 nicht mehr und kann durch das Skript nicht angelegt werden. Was ist der richtige Pfad hier für OSX 10.11?
- Im .plist: OnDemand gibt es schon länger nicht mehr. Richtig wäre wohl KeepAlive. Das führt dazu das das Skript alle 10 Sekunden ausgeführt wird. Gibt es hier vielleicht eine bessere alternative wie onNetworkStatusChanged?
Falls die Quelle verschwindet hier die Anleitung wie das Skript zu installieren ist:
- Es müssen hierfür zwei Dateien angelegt werden. Den Terminal aufrufen und zu Scripts navigieren:
Code:cd /Library/Scripts/
- Nun das Skript selbst erstellen. Hierfür im Terminal folgendes eingeben:
Code:sudo vim toogleAirport.sh
Code:#!/bin/bash function set_airport { new_status=$1 if [ $new_status = "On" ]; then /usr/sbin/networksetup -setairportpower en1 on touch /var/tmp/prev_air_on else /usr/sbin/networksetup -setairportpower en1 off if [ -f "/var/tmp/prev_air_on" ]; then rm /var/tmp/prev_air_on fi fi } function growl { # Checks whether Growl is installed if [ -f "/usr/local/bin/growlnotify" ]; then /usr/local/bin/growlnotify -m "$1" -a "AirPort Utility.app" fi } # Set default values prev_eth_status="Off" prev_air_status="Off" eth_status="Off" # Determine previous ethernet status # If file prev_eth_on exists, ethernet was active last time we checked if [ -f "/var/tmp/prev_eth_on" ]; then prev_eth_status="On" fi # Determine same for AirPort status # File is prev_air_on if [ -f "/var/tmp/prev_air_on" ]; then prev_air_status="On" fi # Check actual current ethernet status if [ "`ifconfig en0 | grep \"status: active\"`" != "" ]; then eth_status="On" fi # And actual current AirPort status air_status=`/usr/sbin/networksetup -getairportpower en1 | awk '{ print $4 }'` # If any change has occured. Run external script (if it exists) if [ "$prev_air_status" != "$air_status" ] || [ "$prev_eth_status" != "$eth_status" ]; then if [ -f "./statusChanged.sh" ]; then "./statusChanged.sh" "$eth_status" "$air_status" & fi fi # Determine whether ethernet status changed if [ "$prev_eth_status" != "$eth_status" ]; then if [ "$eth_status" = "On" ]; then set_airport "Off" growl "Lan-Verbindung gefunden deaktivere AirPort." else set_airport "On" growl "Kein Lan-Verbindung gefunden, aktiviere AirPort." fi # If ethernet did not change else # Check whether AirPort status changed # If so it was done manually by user if [ "$prev_air_status" != "$air_status" ]; then set_airport $air_status if [ "$air_status" = "On" ]; then growl "AirPort wurde manuell aktiviert." else growl "AirPort wurde manuell deaktiviert." fi fi fi # Update ethernet status if [ "$eth_status" == "On" ]; then touch /var/tmp/prev_eth_on else if [ -f "/var/tmp/prev_eth_on" ]; then rm /var/tmp/prev_eth_on fi fi exit 0
- Um die Datei zu erstellen ESC drücken und dann
Code:
wq
- Das Skript muss nun noch mit folgendem Code ausführbar gemacht werden
Code:sudo chmod 755 toggleAirport.sh
- Als nächstes muss in den Ordner LaunchAgents gewechselt werden mit
Code:cd ../LaunchAgents/
- Hier ist die Datei org.mine.toggleairport.plist zu erstellen. mine kann auch durch euren Namen ersetzt werden.
Code:sudo vim org.mine.toggleairport.plist
Code:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.mine.toggleairport</string> <key>OnDemand</key> <true/> <key>ProgramArguments</key> <array> <string>/Library/Scripts/toggleAirport.sh</string> </array> <key>WatchPaths</key> <array> <string>/Library/Preferences/SystemConfiguration</string> </array> </dict> </plist>
- Um die Datei zu erstellen ESC drücken und dann
Code:
wq
- Nach einem Neustart ist das neue Skript aktiv und beim ein Lan Kabel angeschlossen wird wird W-Lan automatisch deaktiviert.
Zuletzt bearbeitet: