Как я могу получить информацию Mac OS X прокси в сценарии Bash?

У меня есть несколько сетевых местоположений, созданных на моем ноутбуке: Работа, Домой, и т.д. Работа одна (s), всем настраивали прокси-сервер, в то время как другие не делают. Это хорошо работает для приложений OSX - Safari, Почта, даже Firefox и Thunderbird с Системным плагином Прокси.

Для терминальных приложений такой как git, svn, gem, и curl У меня есть следующее в моем .bash_profile:

export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY

Мой вопрос - это: там некоторый путь состоит в том, чтобы заставить экспортируемую переменную искать значение от текущего местоположения моей системы? Я предпочел бы, чтобы это было сделано динамично (поэтому, если я изменю местоположения во время терминального сеанса, то это изменится), но я был бы доволен просто тем, которые устанавливают его когда .bash_profile работал (значение, что я должен буду запустить новый терминальный сеанс, когда я изменил местоположения).

Спасибо!

13
задан 29.09.2009, 18:36

2 ответа

Следующее, кажется, работает, но я не уверен, насколько устойчивый это:

system_profiler SPNetworkDataType|grep "HTTP Proxy Server"|awk {'sub(/^.*:[ \t]*/, "", $0); print $0;'}

Это не работает, если Ваше Местоположение использует a proxy.pac вместо трудно кодированного местоположения прокси.

1
ответ дан 07.12.2019, 11:38

Какая версия Mac OS X? Я не положителен, что инструмент включен с Mac OS X 10.4 или ранее.

networksetup должен быть тем, что Вы ищете, а именно, sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE (например, sudo networksetup-getwebproxy Аэропорт)

Вывод выходит как так:

Enabled: Yes
Server: SERVER_ADDRESS
Port: 123
Authenticated Proxy Enabled: 0 for false, 1 for true

Таким образом, необходимо будет преобразовать вывод во что-то применимое.

Действительно сырой пример с помощью awk пару раз (мои awk навыки являются довольно основными) был бы:

sudo networksetup -getwebproxy Airport | awk {'print $2'} | awk {'getline l2; getline l3; print "http://"l2":"l3'} | head -n 1

Результаты в выводе http://SERVER_ADDRESS:123

8
ответ дан 07.12.2019, 11:38

Теги

Похожие вопросы