"Modo Avião" no OS X. Comando alternativo para `rfkill`?

9

O Mac OS X não reconhece rfkillem seu terminal e estou procurando um comando alternativo que tenha funcionalidade semelhante (alternando "Modo de avião").

NOTA: Não desejo abrir um .appbotão de alternância. Eu gostaria de executar o comando na linha de comando ou no script no Bash (ou equivalente).


No "Modo avião", pretendi emprestar o termo da página de suporte do iOS aqui . Gostaria de desativar todas as comunicações de rede recebidas / enviadas do meu sistema.

melvynkim
fonte

Respostas:

10

Crie um local ad hoc nomeado isolatedou airplaneonde todas as interfaces de rede estejam presentes e desativadas .

Alterne para este local surdo com:

networksetup -switchtolocation isolated

Pode ser mais interessante do que rfkilluma vez que você pode protegê-lo de um cabo Ethernet despercebido que pode estar ouvindo todas as suas comunicações (e são muitas): [. Para verificar se tudo está realmente desligado, execute:

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

Se este comando não exibir nada, todas as suas interfaces estão inoperantes , tudo está bem.

Se este comando produzir algo, como aqui:

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

então, significa que o nome da interface (aqui, en1que é o sem fio deste Mac), está onde não deveria. Este é o sinal de que a configuração feita está falhando ou que algum cavalo de Tróia a ativou para acessar seu servidor de controle pela Internet.

dan
fonte
6

Dependendo do meu objetivo (devo também me preocupar em desligar a interface de dados?), Posso escolher o plano de acordo:

Plano A para (1) interfaces de rede e (2) interface de dados

Plano B para (1) interfaces de rede


(Plano A # 1) Obtenha informações sobre as interfaces de hardware instaladas (incluindo interfaces de dados):

Primeiro, gostaria de saber quantas e com quais tipos de interfaces devo me preocupar.

$ 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

(Plano A #?) (Opcional) Obtenha apenas a lista de interfaces de rede:

Este passo me facilita grep.

$ networksetup -listallnetworkservices

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

(Plano A # 2) Obtenha o nome do dispositivo das interfaces de rede.

Gostaria de saber quais interfaces de rede estão ativas.

$ 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

(Plano B # 1) Localize o airportcomando ou defina o alias para o airportcomando se não for reconhecido:

Meu sistema não conseguiu reconhecer o airportcomando, então tive que adicionar a linha abaixo a .bash_profile.

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

(Plano B # 2) Verifique o status atual do 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 

(Planos A e B # 3) Ligar / desligar o 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

(Plano A e B # 4) Ligar / desligar o BlueTooth:

Faça o download blueutil aqui .

$ blueutil status  # Check status of BlueTooth
Status: on

$ blueutil on      # Turn BlueTooth on

$ blueutil off     # Turn BlueTooth off

Roteiro:

Agora que tenho todos os ingredientes, posso escrever o script para OS X 10.7!


Últimos Comentários:

(1) Parte da saída é mascarada com o caractere 'f'.

(2) De acordo com $ man networksetup, você pode configurar o proxy, TCP / IP, PPPoE também (não testado).

(3) A sugestão de RichHomolka networksetup --enableuserprofilefoi descontinuada para o OS X 10.7 (não testado em outras versões).

(4) Se alguém que segue o procedimento acima encontrar um problema, você poderia resolvê-lo no comentário (ou em uma resposta separada)?

melvynkim
fonte
11
Bem-vindo ao site e obrigado pela análise. A única parte que falta na sua resposta (e a única coisa que os futuros visitantes procurarão) é o script que combina todas as descobertas em uma solução. Você poderia adicionar isso também?
nohillside
11
@patrix Ainda não terminei de escrever o script e (acho) pode demorar um pouco para postar aqui ... Estou planejando publicá-lo no github. Vou atualizar o endereço para o github mais tarde. Obrigado pela sua saudação!
melvynkim
11
Oi melv! Excluí sua pergunta no Superusuário, pois a postagem cruzada literal definitivamente não é permitida. Teria sido bom permanecer em qualquer site, apenas para sua informação.
slhck 22/03