На моем ноутбуке настроено несколько сетевых расположений: рабочий, домашний и т. Д. На рабочем (ых) компьютере (ах) настроен прокси-сервер, а на остальных нет. Это прекрасно работает для приложений OSX - Safari, Mail, даже Firefox и Thunderbird с плагином System Proxy .
Для терминальных приложений , таких как git
, svn
, gem
, и curl
я следующий по моему .bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
Мой вопрос заключается в следующем: есть ли способ заставить экспортированную переменную искать значение из текущего местоположения моей системы? Я бы предпочел, чтобы это делалось динамически (поэтому, если я изменю местоположение во время сеанса терминала, оно изменится), но я был бы рад только тому, который установил его при .bash_profile
запуске (то есть мне пришлось бы начать новый сеанс терминала когда я поменялся местами).
Спасибо!
Ответы:
Какая версия Mac OS X? Я не уверен, что этот инструмент включен в Mac OS X 10.4 или более ранней версии.
networksetup
должно быть то, что вы ищете, а именноsudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE
(например, sudo networksetup -getwebproxy Airport)Вывод получается так:
Таким образом, вам нужно будет преобразовать вывод в нечто полезное.
Очень грубый пример использования awk пару раз (мои навыки awk довольно просты):
Результаты в выводе
http://SERVER_ADDRESS:123
источник
networksetup -listallnetworkservices
sudo networksetup -getwebproxy Ethernet
, я получу распечатку, а затем ошибку. Я полагаю, что segfault вызывает разрыв трубы, поэтомуawk
никогда не получит ничего для анализа.awk
. При добавлении awk сообщение segfault исчезает. , , наряду со всем другим выходом.В ответе выше есть комментарий от tlrobinson о том, что он не включает номер порта.
Вы можете сделать это, отключив прокси-сервер HTTP с портом прокси HTTP
Я также видел, что это сделано так:
источник
Кроме того, эта команда может помочь обнаружить другие настройки прокси:
scutil --proxy
источник
Кажется, работает следующее, но я не уверен, насколько оно надежно:
Это не сработает, если в вашем местоположении
proxy.pac
вместо жестко запрограммированного прокси-сервера.источник
Вы можете использовать небольшой инструмент, который я написал, который устанавливает часто используемые переменные окружения для прокси. Использование просто:
Добавлять:
на ваш
.profile
,.bashrc
или.bash_profile
.После этого вы можете использовать переменные , как
$HTTP_PROXY
,$http_proxy
,$HttpProxy
и т.д. для всех протоколов (HTTP, FTP, SOCKS) , включая$NO_PROXY
исключение. Это будет работать для большинства инструментов CLI и получает настройки с панели управления OS X.источник