Meine Schule hat PowerCloud installiert, das OS X offiziell nicht unterstützt. Manchmal funktioniert es, manchmal nicht. Ich habe versucht, es einzugrenzen, aber es ist unmöglich. Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein Automater/AppleScript-Skript zu schreiben, um eine Verbindung zu einem Netzwerk herzustellen, und dann zu sehen, ob es den ! im WLAN-Symbol, und versuchen Sie dann das nächste, und wechseln Sie dann. Gibt es eine Möglichkeit, dies zu tun?
Ich würde es stattdessen über ein Bash-Skript tun, da die Unix-Grundlage von OSX alles bietet, was Sie brauchen, und Sie nicht mit der GUI herumspielen müssen, was nicht einfach ist.
Die beiden wichtigsten Dinge sind
Für das erste sollte ein einfaches ping
ausreichen und für das zweite können Sie den folgenden Befehl verwenden.
networksetup -setairportnetwork en1 "BLAH" "mypassword"
Das Skript würde also so aussehen ...
#!/bin/sh
whotest[0]='test' || (echo 'Failure: arrays not supported in this version of bash.' && exit 2)
# Assuming all APs use the same pass code
myAPpass="mypassword"
# List of APs
myAPlist=(
'NetFasteR WLAN 3'
'WiFi HRC7dE'
'BLAH'
)
myAPcount=0
while [ "x${myAPlist[myAPcount]}" != "x" ]
do
myAPcount=$(( $myAPcount + 1 ))
done
echo "There are $myAPcount APs available."
# IP address to target
myIntIP="192.168.0.1"
# Which AP in the list to attempt next
myAPnum=0
# We'll loop forever
while true ; do
# Monitor connection; Loop until ping fails
while true ; do
# Test connection. If non zero status it failed.
ping -c 1 -t 1 $myIntIP >/dev/null 2>&1 || break
echo "Successfull heart beat at `date`\t\r\c"
# Wait # secs before testing again.
sleep 2
done
echo " "
echo "Failed to contact internal IP. Reconnecting..."
# Try to connect to an AP in the list
while true; do
# Get next AP in the list
if [ $myAPnum -eq $myAPcount ] ; then
myAPnum=0
else
myAPnum=$(( $myAPnum + 1 ))
fi
myNewAP=${myAPlist[myAPnum]}
echo "Trying AP '$myNewAP' : \c"
# Connect to new network
networksetup -setairportnetwork en1 "$myNewAP" "$myAPpass" >/dev/null 2>&1
if [ "x$?" = "x0" ] ; then
echo "Success!"
# Wait for DHCP etc...
sleep 2
break
else
echo "Failed :("
fi
done
done
Sie müssen es wahrscheinlich ein wenig optimieren, um die richtigen Verzögerungen und so weiter zu erhalten, aber für mich funktioniert es ziemlich gut.
Wenn die APs keine Passwörter teilen, müssen Sie ihnen ein zweites Array hinzufügen.
Wenn Sie sich Sorgen um die Sicherheit von Passwörtern machen, können Sie es so einrichten, dass es als root ausgeführt wird, und die Berechtigungen so ändern, dass nur root es lesen kann.
EDIT: Das Skript ist ziemlich dumm. Es kann eine Weile dauern, einen funktionierenden AP zu finden, wenn die Liste lang ist. Sie können Verzögerungen reduzieren, indem Sie es intelligenter machen. Beispielsweise könnten Sie mit dem Flughafen- Tool nach einer Liste verfügbarer APs suchen und dann einen auswählen, mit dem Sie sich verbinden möchten.
Mort