私のラップトップにはいくつかのネットワークロケーションが設定されています。職場、自宅などです。職場ではすべてプロキシサーバーがセットアップされていますが、その他ではセットアップされていません。これは、OSXアプリケーション(Safari、Mail、Firefox、Thunderbirdでも System Proxy プラグイン)で正常に機能します。
git
、svn
、gem
、curl
などの端末アプリケーションの場合、.bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
私の質問はこれです:エクスポートされた変数にシステムの現在の場所から値を参照させる方法はありますか?動的に実行することをお勧めします(そのため、ターミナルセッション中に場所を変更すると変更されます)が、.bash_profile
実行しました(場所を変更したときに、新しいターミナルセッションを開始する必要があることを意味します)。
ありがとう!
以下は機能するようですが、どれほど堅牢かはわかりません。
system_profiler SPNetworkDataType|grep "HTTP Proxy Server"|awk {'sub(/^.*:[ \t]*/, "", $0); print $0;'}
場所がハードコードされたプロキシの場所の代わりにproxy.pac
を使用している場合は機能しません。
Mac OS Xのバージョンは?このツールがMac OS X 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
上記の回答 には、ポート番号が含まれていない方法について 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
さらに、このコマンドは他のプロキシ設定を検出するのに役立ちます:scutil --proxy
小さなツール を使用できます。これは、プロキシに一般的に使用される環境変数を設定します。使い方は簡単です:
追加:
eval `./path/to/export-proxies`
.profile
、.bashrc
、または.bash_profile
に変換します。
その後、$HTTP_PROXY
例外を含むすべてのプロトコル(HTTP、FTP、SOCKS)に$http_proxy
、$HttpProxy
、$NO_PROXY
などの変数を使用できます。これはほとんどのCLIツールで機能し、OS Xコントロールパネルから設定を取得します。