Acceso programático para conectarse a una networking wifi

Muy similar a esta pregunta , pero como me animé a hacer mi @bmike, quería volver a hacer esta pregunta, ya que no era un duplicado de la networking Create AirPort desde la command-line .

Estoy buscando una forma programática para conectarme a una networking wifi. Se puede save (recordar) o desconocido, preferiblemente en Apple Script o a través de Automator.

Lo he hecho en una PC con Windows a través del siguiente command:

netsh wlan add profile wifi.xml user=current 

(creándolo, como la única networking wifi disponible, intentaría conectarse a él)

El verdadero problema que estoy teniendo es: tengo un Mac Book, OSX 10.10, compartido por dos usuarios. Un usuario debería poder acceder (y preferiblemente conectarse por defecto) al SSID "Wifi1" y el segundo usuario debería poder acceder al SSID "Wifi2", pero ninguno de los usuarios debe conectarse al wifi del otro usuario. Windows netsh wlan con la opción user=current logra esto, pero no veo que esto sea compatible con una Mac.

Desactivar el recuerdo de SSID y hacer que los usuarios escriban la contraseña en cada momento, por supuesto, lograría este objective, pero estoy buscando una solución más automatizada.

No he encontrado una manera de lograr esto a través de preferences, prioridades wifi, recordando networkinges o cualquier otra cosa.

También para tener en count, el cambio rápido de usuario está habilitado (esto parece dificultar la creación de scripts en mi investigación porque no hay un desencadenador o evento confiable para escuchar la ejecución del script).

2 Solutions collect form web for “Acceso programático para conectarse a una networking wifi”

Esto debería hacerlo, aunque puede necesitar algunas modificaciones. Cada vez que un usuario cambia, se crea una input de logging del sistema. Sabiendo esto, puede monitorear los cambios de usuario sin esfuerzo:

 global wifi_device on run set wifi_device to do shell script "networksetup -listllhardwareports|grep -A1 'Wi-Fi'|grep Device|sed 's;Device: ;;'" end run on idle set user_name to do shell script "tail -n0 -f /var/log/system.log|grep -om1 'context values set for .*'|sed -e 's;context values set for ;;'" if user_name is equal to "presaccount" then do shell script "networksetup -setairportnetwork " & wifi_device & " presaccount_network password" else if user_name is equal to "other_account" then do shell script "networksetup -setairportnetwork " & wifi_device & " other_account_network password" end if return 1 end idle 

Simplemente cambie los nombres de networking, las passwords y los nombres de count a lo que necesite que sean.

Básicamente, estamos buscando la input de logging que contenga "valores de context establecidos para", que ocurre en cada interruptor, y contiene el nombre de usuario cambiado a. Usamos este nombre de usuario para determinar a qué networking join, ¡y eso es todo! Recomiendo solo permitir que los administradores cambien la networking wifi en las preferences del sistema. En realidad, esto no usa casi ningún recurso, porque el script no puede continuar más allá de la primera línea, hasta que el usuario cambie. Tenga en count que esto se hizo el 10.11. No puedo verificar si la input de logging está presente en 10.10, entonces YMMV. Deberá save esto como una aplicación de permanencia abierta en el Editor de scripts.

Mi idea (basada en esto ) es un poco diferente a la de William.

No funciona con el Cambio rápido de usuario, pero tal vez uno podría usar partes de las cosas de William para mezclarlo.

Este script de shell debe colocarse en el ejecutable / usr / local / bin y en el propietario root. Las diferentes ubicaciones (en Preferences de networking) deben tener los nombres de los usuarios y deben configurarse / rellenarse. También deben establecerse los nombres propios de user1 / 2 y SSID1 / 2. También puede necesitar algunas otras mejoras / modificaciones.

 #!/bin/bash # automatically change location and ssid based on user # networkingirect all IO to /dev/null (comment this out if you want to debug) # exec 1>/dev/null 2>/dev/null # get a little breather before we get data for things to settle down sleep 2 # get/set various system information DEVICEEN="networksetup -listllhardwareports|grep -A1 'Wi-Fi'|grep Device|sed 's;Device: ;;'" CURRENT_USER=$USER SSID1=wifi1 SSID2=wifi2 # basic pattern matching to get all location names separated by newlines LOCATION_NAMES=`scselect | tail -n +2 | cut -d "(" -f 2 | cut -d ")" -f 1` CURRENT_LOCATION=`scselect | grep " \* " | cut -d "(" -f 2 | cut -d ")" -f 1` # no brackets as the grep will return a status code depending on whether the SSID has an own Location if echo "$LOCATION_NAMES" | egrep -q "^$CURRENT_USER$"; then NEW_LOCATION="$CURRENT_USER" else # auto does not seem to be working on Mac OS X Lion, but Automatic does if echo Automatic | grep -q "$LOCATION_NAMES"; then NEW_LOCATION=Automatic elif echo auto | grep -q "$LOCATION_NAMES"; then NEW_LOCATION=auto else echo "Automatic location was not found!" echo "The following locations are known:" echo "$LOCATION_NAMES" fi fi if [ "x$NEW_LOCATION" != "x" -a "x$NEW_LOCATION" != "x$CURRENT_LOCATION" ]; then echo "Changing to $NEW_LOCATION" scselect "$NEW_LOCATION" fi if [ "$NEW_LOCATION" = "user1" ]; then echo "Changing to $SSID1" networksetup -setairportnetwork "$DEVICEEN" "$SSID1" elif [ "$NEW_LOCATION" = "user2" ]; then echo "Changing to $SSID2" networksetup -setairportnetwork "$DEVICEEN" "$SSID2" else echo "SSID was not found!" fi 

El script de shell debe ser iniciado por un agente de lanzamiento plist en / Users / $ User / Library / LaunchAgents.

Configurar networksetup -setairportnetwork en1 "$SSID1/2" no funciona correctamente para mí. Esto podría resolverse desactivando el SSID recordando y agregando la contraseña de Wi-Fi en los commands networksetup...

  • Problemas de iMac 21.5 "Wi-Fi
  • ¿Cómo desconectar iPhone de WIFI sin "olvidarlo"?
  • ¿Iniciar / detener el uso compartido de internet de un script?
  • iMac WiFi Hotspot no funciona
  • WiFi no funciona, pero Apple Ethernet Will?
  • ¿Desconectarse temporalmente de la networking Wi-Fi doméstica?
  • Macbook Air a mediados de 2013 con Mavericks dejó de conectarse al wifi familiar después de la actualización 10.9.4
  • Macbook Air (2011) Problema WIFI
  • Intente autom├íticamente unirse a la red oculta si no hay una red preferida disponible
  • Convierta mac en un punto de acceso personal mientras está conectado a la networking a través de wi-fi
  • Cómo controlar el tráfico LAN
  • Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).