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

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

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


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

Ответы (2)

Создайте специальное место с именем 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) находится там, где его не должно быть. Это признак того, что либо сделанная конфигурация дает сбой, либо какой-то троянский конь включил ее для доступа к управляющему серверу через Интернет.

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

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

План Б для (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

(План 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

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

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

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

(План Б №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

(План А и Б №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) Если кто-то, следуя описанной выше процедуре, столкнется с проблемой, не могли бы вы обратиться к ней в комментарии (или как в отдельном ответе)?

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