"Режим літака" в ОС X. Альтернативна команда для `rfkill`?


9

Mac OS X не розпізнає rfkillзі свого терміналу, і я шукаю альтернативну команду, яка має аналогічну функціональність (перемикання "Airplane Mode").

ПРИМІТКА. Я не хочу відкривати .appпереключення. Я хотів би виконати команду з командного рядка або в скрипті в Bash (або еквівалентах).


Під «Airplane Mode», я мав в виду запозичувати термін зі сторінки підтримки IOS тут . Я хотів би відключити всі вхідні / вихідні мережеві комунікації зі своєї системи.

Відповіді:


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

(План 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) Якщо хтось, хто дотримується вищевказаної процедури, зіткнеться з проблемою, чи можете ви звернутися до них у коментарі (або як в окремій відповіді)?


1
Ласкаво просимо на сайт і дякуємо за аналіз. Єдиний фрагмент, який не вистачає у вашій відповіді (і те, що майбутні відвідувачі будуть шукати) - це сценарій, який поєднує всі висновки в рішення. Чи можете ви також додати це?
nohillside

1
@patrix Я ще не закінчив писати сценарій, і (я думаю) це може бути трохи довгим для публікації тут. Я планую розмістити його на github. Пізніше оновлю адресу до github. Дякуємо за привітання!
мельвінким

1
Привіт мельв! Я видалив ваше запитання на Super User, оскільки дословне перехресне повідомлення точно не дозволено. Було б чудово залишитися на будь-якому сайті, однак, просто FYI.
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.