Mi escuela tiene instalado PowerCloud, que no admite oficialmente OS x, ya Que a veces funciona, a veces no. He tratado de acotar, pero es imposible. Me preguntaba si hay una manera de escribir un Automater/secuencia de comandos de AppleScript para conectarse a la 1 de la red y, a continuación, ver si obtiene el ! en el WiFi símbolo y, a continuación, intente la siguiente, y entonces el ciclo. Es allí una manera de hacer esto?
Respuesta
¿Demasiados anuncios?Yo lo haría a través de un script de bash lugar desde el Unix de OSX proporciona todo que usted necesita y usted no tiene que jugar con la interfaz gráfica de usuario que no es fácil.
Las dos cosas más importantes son
- Comprobación de la conectividad.
- La fuerza de reconexión a un AP.
Para el primero, un simple ping
debe ser suficiente y para el segundo se puede utilizar el siguiente comando.
networksetup -setairportnetwork en1 "BLAH" "mypassword"
Así que el guión sería parecido a este...
#!/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
Usted probablemente tendrá que ajustarlo un poco para obtener el derecho de retrasos y así sucesivamente, pero para mí funciona bastante bien.
Si el APs no compartir las contraseñas, a continuación, tendrá que agregar una segunda matriz con ellos.
Si usted está preocupado acerca de las contraseñas de ser seguro, usted puede configurarlo para que se ejecute como root y cambiar los permisos para que solo root puede leer.
EDIT: El guión es bastante tonto. Puede tomar un tiempo para encontrar un AP que está trabajando si la lista es larga. Usted puede reducir los retrasos por lo que es más inteligente. Por ejemplo, se puede comprobar utilizando el aeropuerto de herramienta para una lista de APs y elegir uno para conectarse.