मैं बैश स्क्रिप्ट में मैक ओएस एक्स की प्रॉक्सी जानकारी कैसे प्राप्त कर सकता हूं?


13

मेरे पास अपने लैपटॉप पर कई नेटवर्क स्थान सेट हैं: कार्य, गृह, आदि कार्य एक (ओं) सभी में एक प्रॉक्सी सर्वर स्थापित है, जबकि अन्य नहीं करते हैं। यह OSX अनुप्रयोगों के लिए ठीक काम करता है - सफारी, मेल, यहां तक ​​कि फ़ायरफ़ॉक्स और थंडरबर्ड सिस्टम प्रॉक्सी प्लगइन के साथ।

टर्मिनल अनुप्रयोगों के लिए इस तरह के रूप git, svn, gem, और curlमैं अपने में निम्नलिखित है .bash_profile:

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

मेरा सवाल यह है: क्या निर्यात किए गए चर को मेरे सिस्टम के वर्तमान स्थान से मूल्य को देखने का कोई तरीका है? मैं इसे गतिशील रूप से करना पसंद करता हूं (इसलिए यदि मैं एक टर्मिनल सत्र के दौरान स्थान बदलता हूं तो यह बदल जाएगा), लेकिन मैं सिर्फ एक के साथ खुश रहूंगा जब इसे सेट किया .bash_profileगया हो (मतलब मुझे नया टर्मिनल सत्र शुरू करना होगा जब मैंने स्थान बदले)।

धन्यवाद!


यहाँ एक बैश स्क्रिप्ट है जो प्रॉक्सी जानकारी निकालने और http_proxy और https_proxy सेट करने के लिए नेटवर्कसेटअप और सुरक्षा का उपयोग करता है: gist.github.com/alexargo/4657760

जवाबों:


8

मैक ओएस एक्स का क्या संस्करण? मैं सकारात्मक नहीं हूँ उपकरण मैक ओएस एक्स 10.4 या उससे पहले के साथ शामिल है।

networksetupवह होना चाहिए जिसे आप खोज रहे हैं, जैसे sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE(उदाहरण के लिए। sudo networksetup -getwebproxy Airport)

आउटपुट बाहर आता है:

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


6
सभी सेवाओं की सूची:networksetup -listallnetworkservices
अर्जन

2
मुझे इस विचार से प्यार है, लेकिन यह मेरे लिए काम नहीं करता है। अगर मैं बस करता sudo networksetup -getwebproxy Ethernetहूं, तो मुझे प्रिंटआउट मिलता है और फिर सेगफॉल्ट होता है। मैं कल्पना करता हूं कि सीगफॉल्ट पाइप को तोड़ने का कारण बनता है, इसलिए awkकभी भी पार्स करने के लिए कुछ भी नहीं मिलता है।
जेम्स ए। रोसेन

क्या कोई सूचना आउटपुट है? और यह अभी भी awk आदेशों के बिना segfault करता है?
चीलियन

मुझे लगता है कि मैंने वास्तव में उस विभाजन दोष को अपने स्वयं के मैक पर एक बार देखा था। मेरे पास 10.5.8 या 10.6.1 पर अब (दोनों इंटेल) पर समस्या नहीं है। शायद आप किसी और संस्करण पर हैं?
अर्जन

मैं 10.5.8 पर हूं, और यह बिना होता है awk। Awk जोड़ने से segfault संदेश गायब हो जाता है। । । अन्य सभी आउटपुट के साथ।
जेम्स ए। रोसेन

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

3

इसके अतिरिक्त यह कमांड अन्य प्रॉक्सी सेटिंग्स को खोजने में मदद कर सकती है: scutil --proxy


1

निम्नलिखित काम करने लगता है, लेकिन मुझे यकीन नहीं है कि यह कितना मजबूत है:

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

यदि आपका स्थान proxy.pacहार्ड-कोडित प्रॉक्सी स्थान के बजाय उपयोग करता है तो यह काम नहीं करता है ।


दुर्भाग्य से यह पोर्ट नंबर को शामिल नहीं करता है।
tlrobinson

0

आप मेरे द्वारा लिखे गए छोटे उपकरण का उपयोग कर सकते हैं , जो प्रॉक्सी के लिए आमतौर पर उपयोग किए जाने वाले पर्यावरण चर को सेट करता है। उपयोग सीधा है:

  1. इसे XCode के साथ संकलित करें।
  2. जोड़ें:

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

    करने के लिए अपने .profile, .bashrcया .bash_profile

उसके बाद आप चर की तरह उपयोग कर सकते हैं $HTTP_PROXY, $http_proxy, $HttpProxy, आदि सभी प्रोटोकॉल के लिए (HTTP, FTP, सॉक्स) सहित $NO_PROXYअपवाद नहीं। यह अधिकांश सीएलआई टूल के लिए काम करेगा और ओएस एक्स कंट्रोल पैनल से सेटिंग्स प्राप्त करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.