OS X中的“飞行模式”。“rfkill”的替代命令?


9

Mac OS X无法rfkill从终端识别,我正在寻找具有类似功能的替代命令(切换“飞行模式”)。

注意:我不想打开.app切换。我想从命令行或Bash(或等价物)的脚本中执行命令。


通过“飞行模式”,我的意思是借用的iOS支持页面术语在这里。我想禁用我系统中的所有传入/传出网络通信。

Answers:


10

创建一个名为ad hoc的位置,isolated或者airplane所有网络接口都存在关闭的位置

切换到这个聋人位置:

networksetup -switchtolocation isolated

它可能比rfkill您可以保护您免受未经注意的以太网电缆更有意思,因为以太网电缆可能正在收听您的所有通信(并且它们很多):[。要检查一切是否真的关闭,请运行:

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

如果此命令没有显示任何内容,那么所有接口都关闭,一切正常。

如果此命令输出任何内容,如下所示:

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

那么这意味着接口名称(此处en1是Mac上的无线接口名称)位于不应该的位置。这表明配置失败或某些特洛伊木马通过互联网将其打开以访问其控制服务器。


6

根据我的目标(我是否应该关注关闭数据接口?),我可以相应地选择计划:

规划A(1)网络接口和(2)数据接口

(1)网络接口的B计划


(计划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)如果无法识别airportairport则找到命令或设置命令别名:

我的系统无法识别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)打开/关闭蓝牙:

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 --enableuserprofileOS X 10.7已弃用(未在其他版本中测试)。

(4)如果遵循上述程序的任何人遇到问题,您能否在评论中(或在单独的答案中)解决这些问题?


1
欢迎来到该网站并感谢您的分析。答案中唯一缺少的部分(以及未来访问者将要寻找的一件事)是将所有发现结合到一个解决方案中的脚本。你也可以加上这个吗?
nohillside

1
@patrix我还没有完成脚本的编写,而且(我认为)在这里发布可能会有点长的时间......我打算将它发布在github上。我稍后会将地址更新到github。谢谢你的问候!
melvynkim 2013年

1
嗨melv!我已经删除了关于超级用户的问题,因为绝对不允许逐字交叉发布。如果只是FYI那么留在任何一个网站都没关系。
slhck 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.