2 votos

Tiene OS X auto-búsqueda de WiFi

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?

1voto

SPRBRN Puntos 1008

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

  1. Comprobación de la conectividad.
  2. 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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X