Mam kilka lokalizacji sieciowych skonfigurowanych na moim laptopie: Praca, Dom itp. Wszystkie te w pracy mają skonfigurowany serwer proxy, podczas gdy inne nie. Działa to dobrze w aplikacjach OSX - Safari, Mail, a nawet Firefox i Thunderbird dzięki wtyczce Proxy systemu .
Do zastosowań końcowych, takich jak git
, svn
, gem
, i curl
mam następujących w moim .bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
Moje pytanie brzmi: czy istnieje jakiś sposób, aby wyeksportowana zmienna szukała wartości z bieżącej lokalizacji mojego systemu? Wolałbym, żeby było to robione dynamicznie (więc jeśli zmienię lokalizacje podczas sesji terminalu, to się zmieni), ale byłbym zadowolony tylko z tej, która ustawiała go podczas .bash_profile
uruchamiania (co oznacza, że musiałbym rozpocząć nową sesję terminalową kiedy zmieniłem lokalizacje).
Dzięki!
Odpowiedzi:
Jaka wersja Mac OS X? Nie jestem pewien, czy narzędzie jest zawarte w systemie Mac OS X 10.4 lub wcześniejszym.
networksetup
powinien być tym, czego szukasz, a mianowiciesudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE
(np. sudo networksetup -getwebproxy Airport)Dane wyjściowe są następujące:
Musisz więc przekonwertować dane wyjściowe na coś użytecznego.
Bardzo prymitywnym przykładem użycia awk kilka razy (moje umiejętności awk są raczej podstawowe) to:
Wynikiem jest wynik
http://SERVER_ADDRESS:123
źródło
networksetup -listallnetworkservices
sudo networksetup -getwebproxy Ethernet
, dostanę wydruk, a następnie błąd. Wyobrażam sobie, że segfault powoduje pęknięcie rury, więcawk
nigdy nie dostaje się do analizy.awk
. Dodanie awk powoduje zniknięcie komunikatu segfault. . . wraz z wszystkimi innymi danymi wyjściowymi.W odpowiedzi powyżej , jest komentarz od tlrobinson o tym, jak to nie zawiera numer portu.
Możesz to zrobić, wyłączając serwer proxy HTTP z portem proxy HTTP
Widziałem też, jak to zrobiono w następujący sposób:
źródło
Dodatkowo to polecenie może pomóc w wykryciu innych ustawień proxy:
scutil --proxy
źródło
Wydaje się, że działają następujące, ale nie jestem pewien, jak solidne jest:
To nie działa, jeśli Twoja lokalizacja używa
proxy.pac
zamiast zakodowanej lokalizacji proxy.źródło
Możesz użyć małego narzędzia , które napisałem, które ustawia często używane zmienne środowiskowe dla serwerów proxy. Użycie jest proste:
Dodaj:
Aplikacje
.profile
,.bashrc
lub.bash_profile
.Po tym można używać zmiennych jak
$HTTP_PROXY
,$http_proxy
,$HttpProxy
, itd. Dla wszystkich protokołów (HTTP, FTP, SOCKS) włącznie z$NO_PROXY
wyjątkami. Działa to w przypadku większości narzędzi CLI i pobiera ustawienia z panelu sterowania OS X.źródło