«Режим полета» в OS X. Альтернативная команда для `rfkill`?

9

Mac OS X не распознает rfkillиз своего терминала, и я ищу альтернативную команду с аналогичными функциями (переключение «Режим полета»).

ПРИМЕЧАНИЕ. Я не хочу открывать .appпереключатель. Я хотел бы выполнить команду из командной строки или в скрипте на Bash (или эквивалентах).


Под «Режимом полета» я имел в виду заимствовать термин со страницы поддержки iOS здесь . Я хотел бы отключить все входящие / исходящие сетевые коммуникации из моей системы.

melvynkim
источник

Ответы:

10

Создайте специальное местоположение с именем isolatedили airplaneгде все сетевые интерфейсы присутствуют и отключены .

Переключитесь на это глухое место с помощью:

networksetup -switchtolocation isolated

Это может быть интереснее, чем то, что rfkillвы можете защитить вас от незамеченного кабеля Ethernet, который может прослушивать все ваши сообщения (а их много): [. Чтобы проверить, что все действительно выключено, запустите:

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

Если эта команда ничего не отображается, то все ваши интерфейсы вниз , все в порядке.

Если эта команда выведет что-нибудь, как здесь:

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

тогда это означает, что имя интерфейса (здесь, en1которое является беспроводным на этом Mac) находится там, где оно не должно. Это признак того, что выполненная конфигурация не работает или что какой-то троянский конь включил ее, чтобы получить доступ к своему управляющему серверу через Интернет.

Дан
источник
6

В зависимости от моей цели (Должен ли я также беспокоиться о закрытии интерфейса данных?), Я могу выбрать соответствующий план:

План A для (1) сетевых интерфейсов и (2) интерфейса данных

План B для (1) сетевых интерфейсов


(План A # 1) Получить информацию об установленных аппаратных интерфейсах (включая интерфейсы данных):

Во-первых, я хотел бы знать, о каких и каких типах интерфейсов мне следует беспокоиться.

$ 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 #?) (Необязательно) Получить список только сетевых интерфейсов:

Этот шаг позволяет мне легко grep.

$ networksetup -listallnetworkservices

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

(План A # 2) Получите имя устройства сетевых интерфейсов.

Я хотел бы знать, какие сетевые интерфейсы активны.

$ 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

(План B # 1) Найдите airportкоманду или установите псевдоним для airportкоманды, если она не распознана:

Моя система не смогла распознать airportкоманду, поэтому мне пришлось добавить строку ниже .bash_profile.

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

(План B # 2) Проверьте текущий статус 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 

(План A & B # 3) Включение / выключение 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

(План A & B # 4) Включение / выключение BlueTooth:

Скачать blueutil здесь .

$ blueutil status  # Check status of BlueTooth
Status: on

$ blueutil on      # Turn BlueTooth on

$ blueutil off     # Turn BlueTooth off

Автор сценария:

Теперь, когда у меня есть все ингредиенты, я могу написать скрипт для OS X 10.7!


Последние комментарии:

(1) Некоторые выходные данные маскируются символом «f».

(2) В соответствии с этим $ man networksetupвы можете настроить прокси, TCP / IP, PPPoE (не тестировалось).

(3) Предложение @ RichHomolka networksetup --enableuserprofileустарело для OS X 10.7 (не тестировалось в других версиях).

(4) Если кто-либо, следуя вышеуказанной процедуре, столкнется с проблемой, не могли бы вы обратиться к ним в комментарии (или в отдельном ответе)?

melvynkim
источник
1
Добро пожаловать на сайт и спасибо за анализ. Единственный фрагмент, отсутствующий в вашем ответе (и то, что будущие посетители будут искать) - это сценарий, объединяющий все полученные результаты в решение. Не могли бы вы также добавить это?
холме
1
@patrix Я еще не закончил написание сценария, и (я думаю), возможно, будет немного долго публиковать здесь .. Я планирую вместо этого опубликовать его на github. Я обновлю адрес на github позже. Спасибо за ваше приветствие!
Melvynkim
1
Привет, Мелв! Я удалил ваш вопрос о Super User, так как дословная перекрестная публикация определенно не разрешена. Было бы хорошо, чтобы остаться на любом сайте, хотя, только к вашему сведению.
slhck