我有一台笔记本电脑,用于咨询,并随身携带从一个客户到另一个客户。我使用 httpd 在家里的机器上进行编码/测试,并将其绑定到全局地址,以便在其他设备(iPad、Android 等)上测试功能。
当我将笔记本电脑连接到其他网络时,我不希望我的 IP 泄露,并且到目前为止,当我离开我的个人网络时,我一直在努力关闭 apache,但我希望实现一定程度的自动化,以便能够声明:
stop service httpd
when
network location <> 'X'
甚至:
firewall service httpd
when
network location <> 'X'
我发现控制平面并将进一步深入研究它,但它看起来可能无法在 OS X 10.9 上运行。
有人这样做吗:
- 更普遍的是使用 apache 和网络控制?
- 更具体地说是 OS X?
答案1
我自己没有这样做过,但听起来编写脚本并不复杂,因此这里有一行可以作为参考:
if [[ `ifconfig \-u \`networksetup -listallhardwareports|grep Wi-Fi -A 1|grep Device|awk '{print $2}'\` inet|grep inet|awk '{print $2}'` = 192.168.1.100 ]];then apachectl start; else apachectl graceful-stop;fi
具体来说:
- 我用了
networksetup -listallhardwareports|grep Wi-Fi -A 1|awk '{print $2}'
找出设备标识符。在我的例子中,它是 en0。 - 我将其封装在反引号中,以便将其导入
ifconfig -u (en0) inet
。 这-u
搜索处于活动状态或 UP 的适配器,并inet
返回 IPv4 信息。您可以将其更改为inet6
将查询更改为 IPv6。 - 我把它包起来
if [[ ]]
测试并将该值与我希望允许启用的 IP 地址进行比较,如果匹配失败则停止。
你只需要决定如何启动它。也许是登录脚本,也可能是启动脚本,随时运行。HTH。