У меня есть несколько сетевых местоположений, созданных на моем ноутбуке: Работа, Домой, и т.д. Работа одна (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
работал (значение, что я должен буду запустить новый терминальный сеанс, когда я изменил местоположения).
Спасибо!
Следующее, кажется, работает, но я не уверен, насколько устойчивый это:
system_profiler SPNetworkDataType|grep "HTTP Proxy Server"|awk {'sub(/^.*:[ \t]*/, "", $0); print $0;'}
Это не работает, если Ваше Местоположение использует a proxy.pac
вместо трудно кодированного местоположения прокси.
Какая версия 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