13

На моем ноутбуке настроено несколько сетевых расположений: рабочий, домашний и т.д. На рабочем (ых) компьютере (ах) настроен прокси-сервер, а на других нет. Это прекрасно работает для приложений 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 (то есть мне пришлось бы начать терминальная сессия, когда я сменил расположение).

Спасибо!

5 ответов5

7

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

networksetup должен быть то , что вы ищете, а именно sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE (например. Судо 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

4

В ответе выше есть комментарий от tlrobinson о том, что он не включает номер порта.

Вы можете сделать это, отключив прокси-сервер HTTP с портом прокси HTTP

Я также видел, что это сделано так:

system_profiler SPNetworkDataType | grep "HTTP Proxy Server" | awk '{print $4}' | head -1
system_profiler SPNetworkDataType | grep "HTTP Proxy Port" | awk '{print $4}' | head -1
2

Кроме того, эта команда может помочь обнаружить другие настройки прокси: scutil --proxy

1

Кажется, работает следующее, но я не уверен, насколько оно надежно:

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

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

0

Вы можете использовать небольшой инструмент, который я написал, который устанавливает часто используемые переменные окружения для прокси. Использование просто:

  1. Скомпилируйте его с помощью xCode.
  2. Добавлять:

    eval `./path/to/export-proxies`
    

    на ваш .profile , .bashrc или .bash_profile .

После этого вы можете использовать переменные, такие как $HTTP_PROXY , $http_proxy , $HttpProxy и т.д. Для всех протоколов (HTTP, FTP, SOCKS), включая исключения $NO_PROXY . Это будет работать для большинства инструментов CLI и получает настройки из панели управления OS X.

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