如何根据笔记本电脑的网络位置启用/禁用 apache httpd?

如何根据笔记本电脑的网络位置启用/禁用 apache httpd?

我有一台笔记本电脑,用于咨询,并随身携带从一个客户到另一个客户。我使用 httpd 在家里的机器上进行编码/测试,并将其绑定到全局地址,以便在其他设备(iPad、Android 等)上测试功能。

当我将笔记本电脑连接到其他网络时,我不希望我的 IP 泄露,并且到目前为止,当我离开我的个人网络时,我一直在努力关闭 apache,但我希望实现一定程度的自动化,以便能够声明:

stop service httpd
when
network location <> 'X'

甚至:

firewall service httpd
when
network location <> 'X'

我发现控制平面并将进一步深入研究它,但它看起来可能无法在 OS X 10.9 上运行。

有人这样做吗:

  1. 更普遍的是使用 apache 和网络控制?
  2. 更具体地说是 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。

相关内容