Mac OS X'in proxy bilgilerini bir Bash komut dosyasına nasıl alabilirim?


13

Dizüstü bilgisayarımda birkaç ağ konumum var: İş, Ev, vb. Sistem Proxy eklentisi ile Safari, Mail, hatta Firefox ve Thunderbird olmak üzere OSX uygulamalarında işe yarar .

Terminal uygulamalar için örneğin git, svn, gem, ve curlben benim, takipçileriniz var .bash_profile:

export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY

Benim sorum şudur: Dışa aktarılan değişkeni sistemimin geçerli konumundan gelen değeri aramanın bir yolu var mı? Dinamik olarak yapılmasını tercih ederim (bu yüzden bir terminal oturumu sırasında yerleri değiştirirsem değişecektir), ama .bash_profilekoştuğunda ayarlayan sadece biriyle mutlu olurum (yani yeni bir terminal oturumu başlatmak zorunda kalacağım) yerleri değiştirdiğimde).

Teşekkürler!


Proxy bilgilerini ayıklamak ve http_proxy ve https_proxy'yi ayarlamak için networketup

Yanıtlar:


8

Mac OS X'in hangi sürümü? Aracın Mac OS X 10.4 veya daha önceki sürümlerde yer aldığından emin değilim.

networksetuparadığınız şey olmalıdır sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE(ör. sudo networketup -getwebproxy Airport)

Çıktı şu şekilde çıkıyor:

Enabled: Yes
Server: SERVER_ADDRESS
Port: 123
Authenticated Proxy Enabled: 0 for false, 1 for true

Bu nedenle çıktıyı kullanılabilir bir şeye dönüştürmeniz gerekir.

Awk'yi birkaç kez kullanan gerçekten kaba bir örnek (awk becerilerim oldukça basittir):

sudo networksetup -getwebproxy Airport | awk {'print $2'} | awk {'getline l2; getline l3; print "http://"l2":"l3'} | head -n 1

Bir çıktıdaki sonuçlar http://SERVER_ADDRESS:123


6
Tüm hizmetlerin listesi:networksetup -listallnetworkservices
Arjan

2
Fikri seviyorum, ama benim için işe yaramıyor. Sadece yaparsam sudo networksetup -getwebproxy Ethernet, çıktıyı ve sonra bir segfault alıyorum. Segfault borunun kırılmasına neden olduğunu hayal ediyorum, bu yüzden awkasla ayrışacak bir şey almıyor
James A. Rosen

Herhangi bir bilgi çıktısı var mı? Ve awk komutları olmadan hala segfault mu?
Chealion

Sanırım bu bölümleme hatasını kendi Mac'lerimde bir kez gördüm. Şimdi 10.5.8 veya 10.6.1'de sorun yaşıyorum (her ikisi de Intel). Belki başka bir versiyondasınızdır?
Arjan

10.5.8'deyim ve bu olmadan olur awk. Awk eklendiğinde segfault mesajı kaybolur. . . diğer tüm çıktılarla birlikte.
James A. Rosen

4

In yukarıdaki cevap , bir var comment gelen tlrobinson o port numarasını içermez nasıl.

Bunu HTTP Proxy Sunucusunu HTTP Proxy Bağlantı Noktası ile değiştirerek yapabilirsiniz

Ben de bunun böyle yapıldığını gördüm:

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

3

Ayrıca, bu komut diğer proxy ayarlarını keşfetmeye yardımcı olabilir: scutil --proxy


1

Aşağıdakiler işe yarıyor gibi görünüyor, ancak ne kadar sağlam olduğundan emin değilim:

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

Konumunuz proxy.pacsabit kodlu bir proxy konumu yerine çalışmazsa çalışmaz .


Ne yazık ki bu bağlantı noktası numarasını içermiyor gibi görünüyor.
tlrobinson

0

Proxy'ler için yaygın olarak kullanılan ortam değişkenlerini ayarlayan yazdığım küçük aracı kullanabilirsiniz . Kullanımı basittir:

  1. XCode ile derleyin.
  2. Ekle:

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

    senin için .profile, .bashrcya da .bash_profile.

Eğer gibi değişkenler kullanabilirsiniz Bundan sonra $HTTP_PROXY, $http_proxy, $HttpProxybütün protokoller için, vb (HTTP, FTP, SOCKS) dahil $NO_PROXYistisnalar. Bu, çoğu CLI aracı için çalışır ve ayarları OS X kontrol panelinden alır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.