«Mode avion» dans OS X. Commande alternative pour «rfkill»?

9

Mac OS X ne reconnaît pas à rfkillpartir de son terminal, et je recherche une commande alternative ayant des fonctionnalités similaires (basculer en "Mode Avion").

REMARQUE: je ne souhaite pas ouvrir une .appbascule. Je voudrais exécuter la commande à partir de la ligne de commande ou dans le script dans Bash (ou équivalents).


Par «mode avion», je voulais emprunter le terme de la page de support iOS ici . Je souhaite désactiver toutes les communications réseau entrantes / sortantes de mon système.

melvynkim
la source

Réponses:

10

Faites un emplacement ad hoc nommé isolatedou airplaneoù toutes les interfaces réseau sont présentes et désactivées .

Basculez vers cet endroit sourd avec:

networksetup -switchtolocation isolated

Cela pourrait être plus intéressant que rfkillpuisque vous pouvez vous protéger contre un câble Ethernet inaperçu qui pourrait écouter toutes vos communications (et elles sont beaucoup): [. Pour vérifier que tout est vraiment hors tension, exécutez:

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

Si cette commande n'affiche rien, alors toutes vos interfaces sont en panne , tout va bien.

Si cette commande affiche quelque chose, comme ici:

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

cela signifie que le nom de l'interface (ici celui en1qui est sans fil sur ce Mac) est là où il ne devrait pas. C'est le signe que la configuration effectuée échoue ou qu'un cheval de Troie l'a activée pour atteindre son serveur de contrôle via Internet.

dan
la source
6

En fonction de mon objectif (Dois-je également m'inquiéter de fermer l'interface de données?), Je peux choisir le plan en conséquence:

Plan A pour (1) interfaces réseau et (2) interface de données

Plan B pour (1) interfaces réseau


(Plan A # 1) Obtenez les informations sur les interfaces matérielles installées (y compris les interfaces de données):

Tout d'abord, j'aimerais savoir combien et quels types d'interfaces je dois m'inquiéter.

$ 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 #?) (Facultatif) Obtenez la liste des interfaces réseau uniquement:

Cette étape me facilite la tâche grep.

$ networksetup -listallnetworkservices

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

(Plan A # 2) Obtenez le nom de périphérique des interfaces réseau.

Je voudrais savoir quelle (s) interface (s) réseau est / sont active (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) Localisez la airportcommande ou définissez un alias pour la airportcommande si elle n'est pas reconnue:

Mon système ne pouvait pas reconnaître la airportcommande, j'ai donc dû ajouter la ligne ci-dessous à .bash_profile.

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

(Plan B # 2) Vérifiez l'état actuel d'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 & B # 3) Allumer / éteindre l'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 & B # 4) Allumer / éteindre le BlueTooth:

Téléchargez blueutil ici .

$ blueutil status  # Check status of BlueTooth
Status: on

$ blueutil on      # Turn BlueTooth on

$ blueutil off     # Turn BlueTooth off

Scénario:

Maintenant que j'ai tous les ingrédients, je peux écrire le script pour OS X 10.7!


Derniers commentaires:

(1) Certaines sorties sont masquées par le caractère 'f'.

(2) Selon $ man networksetup, vous pouvez également configurer le proxy, TCP / IP, PPPoE (non testé).

(3) La suggestion de @ RichHomolka networksetup --enableuserprofileest déconseillée pour OS X 10.7 (non testée dans les autres versions).

(4) Si quelqu'un suivant la procédure ci-dessus rencontre un problème, pourriez-vous s'il vous plaît les adresser dans le commentaire (ou comme dans une réponse séparée)?

melvynkim
la source
1
Bienvenue sur le site et merci pour l'analyse. Le seul élément manquant dans votre réponse (et la seule chose que les futurs visiteurs rechercheront) est le script combinant toutes les conclusions en une solution. Pourriez-vous également ajouter ceci?
nohillside
1
@patrix Je n'ai pas encore fini d'écrire le script, et (je pense) cela peut être un peu long à poster ici .. Je prévois de le publier sur github à la place. Je mettrai à jour l'adresse du github plus tard. Merci pour votre salut!
melvynkim
1
Salut melv! J'ai supprimé votre question sur Super User, car la publication croisée textuelle n'est définitivement pas autorisée. Il aurait été bien de rester sur l'un ou l'autre site, juste pour info.
slhck