"Airplane Mode" di OS X. Perintah alternatif untuk `rfkill`?

9

Mac OS X tidak mengenali rfkilldari terminalnya, dan saya mencari perintah alternatif yang memiliki fungsi serupa (mengganti "Mode Pesawat").

CATATAN: Saya tidak ingin membuka .appto toggle. Saya ingin menjalankan perintah dari baris perintah atau dalam skrip di Bash (atau yang setara).


Dengan "Mode Pesawat", saya bermaksud meminjam istilah dari halaman dukungan iOS di sini . Saya ingin menonaktifkan semua komunikasi jaringan masuk / keluar dari sistem saya.

melvynkim
sumber

Jawaban:

10

Buat lokasi ad hoc bernama isolatedatau airplanetempat semua antarmuka jaringan hadir dan dimatikan .

Beralih ke lokasi tuli ini dengan:

networksetup -switchtolocation isolated

Ini mungkin lebih menarik daripada rfkillkarena Anda dapat melindungi Anda dari kabel Ethernet tanpa disadari yang mungkin mendengarkan semua komunikasi Anda (dan mereka banyak): [. Untuk memeriksa apakah semuanya benar-benar mati, jalankan:

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

Jika perintah ini tidak menampilkan apa pun, maka semua antarmuka Anda tidak berfungsi , semuanya OK.

Jika perintah ini menghasilkan sesuatu, seperti di sini:

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

maka itu berarti bahwa nama antarmuka (di sini en1yang merupakan nirkabel di Mac ini) ada di tempat yang seharusnya tidak. Ini adalah tanda bahwa konfigurasi yang dibuat gagal atau beberapa kuda Trojan menyalakannya untuk mencapai server kontrolnya melalui Internet.

dan
sumber
6

Bergantung pada tujuan saya (Haruskah saya khawatir tentang mematikan antarmuka data juga?), Saya dapat memilih paket yang sesuai:

Paket A untuk (1) Antarmuka Jaringan dan (2) Antarmuka Data

Paket B untuk (1) Antarmuka Jaringan


(Paket A # 1) Dapatkan info antarmuka perangkat keras yang diinstal (termasuk antarmuka data):

Pertama, saya ingin tahu berapa banyak dan jenis antarmuka apa yang harus saya khawatirkan.

$ 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

(Paket A #?) (Opsional) Dapatkan daftar antarmuka jaringan saja:

Langkah ini memudahkan saya grep.

$ networksetup -listallnetworkservices

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

(Paket A # 2) Dapatkan nama perangkat dari antarmuka jaringan.

Saya ingin tahu antarmuka jaringan mana yang aktif.

$ 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

(Paket B # 1) Temukan airportperintah atau atur alias untuk airportperintah jika tidak dikenali:

Sistem saya tidak dapat mengenali airportperintah, jadi saya harus menambahkan baris di bawah ini ke .bash_profile.

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

(Paket B # 2) Periksa status AirPort saat ini:

$ ./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 

(Paket A & B # 3) Menghidupkan / mematikan 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

(Paket A & B # 4) Menghidupkan / mematikan BlueTooth:

Unduh di blueutil sini .

$ blueutil status  # Check status of BlueTooth
Status: on

$ blueutil on      # Turn BlueTooth on

$ blueutil off     # Turn BlueTooth off

Naskah:

Sekarang saya memiliki semua bahan, saya dapat menulis skrip untuk OS X 10.7!


Komentar Terakhir:

(1) Beberapa output ditutupi dengan karakter 'f'.

(2) Menurut $ man networksetup, Anda dapat mengkonfigurasi proxy, TCP / IP, PPPoE juga (tidak diuji).

(3) saran @ RichHomolka, networksetup --enableuserprofilesudah tidak berlaku untuk OS X 10.7 (tidak diuji dalam versi lain).

(4) Jika ada yang mengikuti prosedur di atas menemui masalah, dapatkah Anda mengatasinya dalam komentar (atau dalam jawaban terpisah)?

melvynkim
sumber
1
Selamat datang di situs ini dan terima kasih untuk analisisnya. Satu-satunya bagian yang hilang dalam jawaban Anda (dan satu hal yang akan dicari pengunjung masa depan) adalah skrip yang menggabungkan semua temuan menjadi solusi. Bisakah Anda menambahkan ini juga?
nohillside
1
@patrix Saya belum selesai menulis skrip, dan (saya pikir) mungkin agak lama untuk memposting di sini .. Saya berencana untuk mempostingnya di github. Saya akan memperbarui alamatnya ke github nanti. Terima kasih atas salam anda!
melvynkim
1
Hai melv! Saya telah menghapus pertanyaan Anda pada Pengguna Super, karena kata sandi lintas posting jelas tidak diizinkan. Akan lebih baik untuk tetap di kedua situs, hanya FYI.
slhck