Jam*_*sen 15 terminal bash proxy macos
我在我的笔记本电脑上设置了几个网络位置:工作、家庭等。工作中的一个都设置了代理服务器,而其他的则没有。这适用于 OSX 应用程序——Safari、Mail,甚至带有系统代理的Firefox 和 Thunderbird插件的。
对于终端应用,例如git
,svn
,gem
,和curl
我在下面.bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法让导出的变量从我的系统当前位置查找值?我更喜欢它是动态完成的(所以如果我在终端会话期间改变位置,它会改变),但我会很高兴只有一个设置它的时候.bash_profile
运行(这意味着我必须开始一个新的终端会话)当我改变位置时)。
谢谢!
什么版本的 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
Run Code Online (Sandbox Code Playgroud)
因此,您需要将输出转换为可用的内容。
使用 awk 几次(我的 awk 技能相当基本)的一个非常粗略的例子是:
sudo networksetup -getwebproxy Airport | awk {'print $2'} | awk {'getline l2; getline l3; print "http://"l2":"l3'} | head -n 1
Run Code Online (Sandbox Code Playgroud)
输出结果 http://SERVER_ADDRESS:123
此外,此命令可能有助于发现其他代理设置:scutil --proxy
小智 5
在上面的回答,有评论从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
Run Code Online (Sandbox Code Playgroud)
以下似乎有效,但我不确定它有多强大:
system_profiler SPNetworkDataType|grep "HTTP Proxy Server"|awk {'sub(/^.*:[ \t]*/, "", $0); print $0;'}
Run Code Online (Sandbox Code Playgroud)
proxy.pac
如果您的位置使用而不是硬编码的代理位置,则它不起作用。
归档时间: |
|
查看次数: |
52858 次 |
最近记录: |