Auf meinem Laptop sind mehrere Netzwerkstandorte eingerichtet: "Arbeit", "Zuhause" usw. Auf den Arbeitsservern ist ein Proxyserver eingerichtet, auf den anderen nicht. Dies funktioniert gut für OSX-Anwendungen - Safari, Mail, sogar Firefox und Thunderbird mit dem System Proxy- Plugin.
Für Terminal - Anwendungen wie zum Beispiel git
, svn
, gem
und curl
ich habe folgende in meinem .bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
Meine Frage lautet: Gibt es eine Möglichkeit, die exportierte Variable dazu zu bringen, den Wert vom aktuellen Standort meines Systems abzurufen? Ich würde es vorziehen, dynamisch ausgeführt zu werden (wenn ich also während einer Terminalsitzung die Position ändere, ändert sich dies), aber ich würde mich über nur eine freuen, die dies beim .bash_profile
Ausführen festgelegt hat (was bedeutet, dass ich eine neue Terminalsitzung starten muss) als ich den Ort gewechselt habe).
Vielen Dank!
Antworten:
Welche Version von Mac OS X? Ich bin mir nicht sicher, ob das Tool in Mac OS X 10.4 oder früher enthalten ist.
networksetup
sollte das sein, wonach du suchst, nämlichsudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE
(zB sudo networksetup -getwebproxy Airport)Die Ausgabe sieht folgendermaßen aus:
Sie müssen also die Ausgabe in etwas Verwendbares konvertieren.
Ein sehr grobes Beispiel, in dem awk ein paar Mal verwendet wird (meine awk-Kenntnisse sind eher grundlegend), wäre:
Ergibt eine Ausgabe
http://SERVER_ADDRESS:123
quelle
networksetup -listallnetworkservices
sudo networksetup -getwebproxy Ethernet
, bekomme ich den Ausdruck und dann einen Segfault. Ich stelle mir vor, dass der Segfehler dazu führt, dass die Pipe brichtawk
.awk
. Durch Hinzufügen der awk wird die Segfault-Meldung ausgeblendet. . . zusammen mit allen anderen Ausgaben.In der obigen Antwort gibt es einen Kommentar von tlrobinson darüber, dass die Portnummer nicht enthalten ist.
Sie können dies tun, indem Sie HTTP Proxy Server mit HTTP Proxy Port ausschalten
Ich habe das auch so gesehen:
quelle
Außerdem kann dieser Befehl dazu beitragen, andere Proxy-Einstellungen zu ermitteln:
scutil --proxy
quelle
Folgendes scheint zu funktionieren, aber ich bin mir nicht sicher, wie robust es ist:
Es funktioniert nicht, wenn Ihr Standort einen
proxy.pac
anstelle eines fest codierten Proxy-Standorts verwendet.quelle
Sie können das kleine Tool verwenden, das ich geschrieben habe und das die häufig verwendeten Umgebungsvariablen für Proxys festlegt. Die Verwendung ist unkompliziert:
Hinzufügen:
zu Ihrem
.profile
,.bashrc
oder.bash_profile
.Danach können Sie Variablen wie verwenden können
$HTTP_PROXY
,$http_proxy
,$HttpProxy
etc. für alle Protokolle (HTTP, FTP, SOCKS) , einschließlich der$NO_PROXY
Ausnahmen. Dies funktioniert für die meisten CLI-Tools und ruft die Einstellungen über das OS X-Bedienfeld ab.quelle