"Modo avión" en OS X. ¿Comando alternativo para `rfkill`?

9

Mac OS X no reconoce rfkilldesde su terminal, y estoy buscando un comando alternativo que tenga una funcionalidad similar (alternar "Modo avión").

NOTA: No deseo abrir una .apppara alternar. Me gustaría ejecutar el comando desde la línea de comandos o dentro del script en Bash (o equivalentes).


Por "Modo avión", quise tomar prestado el término de la página de soporte de iOS aquí . Me gustaría deshabilitar todas las comunicaciones de red entrantes / salientes de mi sistema.

melvynkim
fuente

Respuestas:

10

Haga una ubicación ad hoc llamada isolatedo airplanedonde todas las interfaces de red estén presentes y apagadas .

Cambie a esta ubicación sorda con:

networksetup -switchtolocation isolated

Puede ser más interesante que rfkillya que puede protegerlo de un cable Ethernet inadvertido que podría estar escuchando todas sus comunicaciones (y son muchas): [. Para verificar que todo esté realmente apagado, ejecute:

ifconfig -a | grep '[<,]UP[,>]' | grep -v '[<,]LOOPBACK[,>]'

Si este comando no muestra nada, entonces todas sus interfaces están caídas , todo está bien.

Si este comando genera algo, como aquí:

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

entonces significa que el nombre de la interfaz (aquí, en1que es el inalámbrico en esta Mac) está donde no debería. Esta es la señal de que la configuración realizada está fallando o que algún troyano la encendió para llegar a su servidor de control a través de Internet.

dan
fuente
6

Dependiendo de mi objetivo (¿debería preocuparme también por cerrar la interfaz de datos?), Puedo elegir el plan en consecuencia:

Plan A para (1) Interfaces de red y (2) Interfaz de datos

Plan B para (1) Interfaces de red


(Plan A # 1) Obtenga información de las interfaces de hardware instaladas (incluidas las interfaces de datos):

Primero, me gustaría saber cuántas y de qué tipo de interfaces debería preocuparme.

$ networksetup -listallhardwareports

Hardware Port: Bluetooth DUN
Device: Bluetooth-Modem
Ethernet Address: N/A

Hardware Port: Ethernet
Device: en0
Ethernet Address: ff:ff:ff:ff:ff:ff

Hardware Port: FireWire
Device: fw0
Ethernet Address: ff:ff:ff:ff:ff:ff:ff:ff

Hardware Port: Wi-Fi
Device: en1
Ethernet Address: ff:ff:ff:ff:ff:f

(Plan A #?) (Opcional) Obtenga solo la lista de interfaces de red:

Este paso me hace fácil grep.

$ networksetup -listallnetworkservices

An asterisk (*) denotes that a network service is disabled.
Ethernet
FireWire
Wi-Fi

(Plan A # 2) Obtenga el nombre del dispositivo de las interfaces de red.

Me gustaría saber qué interfaz (es) de red está (n) activa (s).

$ ifconfig

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether ff:ff:ff:ff:ff:ff 
    media: autoselect (none)
    status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether ff:ff:ff:ff:ff:ff 
    inet6 ffff::ffff:ffff:ffff:ffff%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.fff netmask 0xffffff00 broadcast 192.168.1.fff
    media: autoselect
    status: active
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
    lladdr ff:ff:ff:ff:ff:ff:ff:ff 
    media: autoselect <full-duplex>
    status: inactive

(Plan B # 1) Localice el airportcomando o establezca el alias para el airportcomando si no se reconoce:

Mi sistema no podía reconocer el airportcomando, así que tuve que agregar debajo de la línea .bash_profile.

alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport'

(Plan B # 2) Verifique el estado actual de AirPort:

$ ./airport -I

     agrCtlRSSI: -10
     agrExtRSSI: 0
    agrCtlNoise: -10
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 100
        maxRate: 100
lastAssocStatus: 0
    802.11 auth: open
      link auth: fffffffffffffffff
          BSSID: ff:ff:ff:ff:ff:ff
           SSID: MelvNetwork
            MCS: 15
        channel: 6 

(Plan A y B # 3) Encendido / apagado del AirPort:

# For OS X 10.7 and later
$ networksetup -setairportpower en1 on   # Turn on Airport
$ networksetup -setairportpower en1 off  # Turn off Airport

# for OS X 10.6 and below
$ networksetup -setairportpower on       # Turn on AirPort
$ networksetup -setairportpower off      # Turn off AirPort

(Plan A y B # 4) Encendido / apagado de BlueTooth:

Descarga blueutil aquí .

$ blueutil status  # Check status of BlueTooth
Status: on

$ blueutil on      # Turn BlueTooth on

$ blueutil off     # Turn BlueTooth off

Guión:

Ahora que tengo todos los ingredientes, ¡puedo escribir el script para OS X 10.7!


Últimos comentarios:

(1) Algunos de los resultados están enmascarados con el carácter 'f'.

(2) Según $ man networksetup, también puede configurar el proxy, TCP / IP, PPPoE (no probado).

(3) La sugerencia de @ RichHomolka networksetup --enableuserprofileestá en desuso para OS X 10.7 (no se ha probado en otras versiones).

(4) Si alguien que sigue el procedimiento anterior encuentra un problema, ¿podría abordarlo en el comentario (o en una respuesta por separado)?

melvynkim
fuente
1
Bienvenido al sitio y gracias por el análisis. La única pieza que falta en su respuesta (y lo único que los futuros visitantes buscarán) es el guión que combina todos los hallazgos en una solución. ¿Podría agregar esto también?
nohillside
1
@patrix Todavía no he terminado de escribir el script, y (creo) que puede ser un poco largo publicar aquí ... Estoy planeando publicarlo en github. Actualizaré la dirección al github más tarde. ¡Gracias por su saludo!
melvynkim
1
Hola melv He eliminado tu pregunta sobre Superusuario, ya que la publicación cruzada literal no está permitida. Sin embargo, hubiera estado bien permanecer en cualquiera de los sitios, solo para tu información.
slhck