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.