У меня есть ноутбук, который я использую для консультаций, и он путешествует со мной от клиента к клиенту. Я использую 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 ответ1

0

Я сам этого не делал, но для сценария это звучало несложно, так что здесь можно использовать одну строчку:

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.
  • Я включил это в backtics, чтобы оно передавалось в ifconfig -u (en0) inet. -u ищет активные адаптеры или UP, и inet возвращает информацию IPv4. Вы можете изменить это на inet6 чтобы изменить запрос на IPv6.
  • Я завернул этот тест if [[ ]] и сравнил значение с IP-адресом. Я хочу, чтобы он включался и останавливался, если совпадение не удалось.

Вы просто должны решить, как вы хотите начать это. Возможно, сценарий входа или запуск сценария для запуска по желанию. НТН.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .