如何在 Bash 脚本中获取 Mac OS X 的代理信息?

如何在 Bash 脚本中获取 Mac OS X 的代理信息?

我的笔记本电脑上设置了多个网络位置:工作、家庭等。工作网络都设置了代理服务器,而其他网络则没有。这对于 OSX 应用程序(Safari、Mail,甚至是 Firefox 和 Thunderbird)都很好用,并且系统代理插入。

对于终端应用程序,例如git、、和,我的 中有以下内容:svngemcurl.bash_profile

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

我的问题是:是否有某种方法可以让导出的变量从系统当前位置查找值?我希望它能够动态完成(因此如果我在终端会话期间更改位置,它也会更改),但我很乐意只在.bash_profile运行时设置它(这意味着当我更改位置时我必须启动一个新的终端会话)。

谢谢!

答案1

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

答案2

此外,此命令可能有助于发现其他代理设置:scutil --proxy

答案3

在里面回答上面,有一个评论特尔罗宾逊关于它如何不包含端口号。

你可以通过切换来做到这一点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

答案4

我刚刚做了这个scutil --proxy,复制了HTTPPort参数和HTTPProxy参数。然后我做了这个export ALL_PROXY=HTTPPort:HTTPProxy,您将用参数替换HTTPPortHTTPProxy。最后,我做了这个,/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 现在您就可以开始了。

相关内容