Como faço para ativar / desativar o httpd apache com base na localização de rede do meu laptop?

0

Eu tenho um laptop que uso para consultoria e que viaja comigo de cliente para cliente. Eu uso o httpd para codificar / testar na minha máquina em casa e ligá-lo ao endereço global para testar a funcionalidade em outros dispositivos (iPad, Android, e outros).

Eu não quero meu ip escapar quando eu conecto meu laptop a outras redes e, portanto, tenho sido diligentemente desligado o apache quando eu deixo minha rede pessoal, no entanto eu gostaria de um grau de automação para poder declarar:

stop service httpd
when
network location <> 'X'

ou até mesmo:

firewall service httpd
when
network location <> 'X'

Eu descobri o control plane e vou mais adiante, mas parece que ele pode não funcionar no OS X 10.9.

Alguém está fazendo isso:

  1. Mais geralmente com os controles do apache e da rede?
  2. Mais especificamente no OS X?
por Raymond Kroeker 27.03.2014 / 16:15

1 resposta

0

Eu não fiz isso sozinho, mas soou descomplicado para o script, então aqui está um verso para construir:

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

Quebrando isso:

  • usei networksetup -listallhardwareports|grep Wi-Fi -A 1|awk '{print $2}' para descobrir o identificador do dispositivo. No meu caso foi en0.
  • Eu coloquei isso no backtics para que fosse canalizado para ifconfig -u (en0) inet . O -u procura por adaptadores ativos ou UP e inet retornaram informações de IPv4. Você pode alterar isso para inet6 para alterar a consulta para IPv6.
  • Eu agrupei esse if [[ ]] teste e comparei o valor com o endereço IP que eu quero para permitir a ativação e parar se a correspondência falhar.

Você só terá que decidir como quer dar o pontapé inicial. Talvez um script de logon ou possivelmente um script de lançamento seja executado à vontade. HTH.

    
por 27.03.2014 / 19:42