我将如何在 OSX 终端中配置代理
How would I configure a proxy in OSX terminal
我如何通过终端为我的计算机添加和激活代理(无需进入系统偏好设置。)我可以用 scutil --proxy
以某种方式做到这一点吗?我 运行 OSX Yosemite 使用 MacBook Air
方法一
我们可以使用awk
解析scutil
的输出并提取代理配置。以下代码段可以解决问题:
$ export http_proxy=`scutil --proxy | awk '\
/HTTPEnable/ { enabled = ; } \
/HTTPProxy/ { server = ; } \
/HTTPPort/ { port = ; } \
END { if (enabled == "1") { print "http://" server ":" port; } }'`
$ export HTTP_PROXY="${http_proxy}"
此脚本在 scutil
的输出中查找 HTTPEnable
、HTTPProxy
和 HTTPPort
。如果启用了代理,脚本会打印出代理 URL 并将其设置为 http_proxy
环境变量。如果未启用代理,脚本会将 http_proxy
设置为空字符串。最后一行还设置了 HTTP_PROXY
环境变量,因为一些命令行应用程序使用它。
将此代码段放入您的 .bash_profile 可确保您的代理在有线和无线网络之间切换时保持自动配置。
方法二
您可以尝试创建一个 bash 登录脚本,该脚本使用 "networksetup" 的以下用途之一来列出当前代理,然后解析出服务器地址并将其应用于当前终端会话:
networksetup -getftpproxy <servicename>
networksetup -getwebproxy <servicename>
networksetup -getsecurewebproxy <servicename>
networksetup -getstreamingproxy <servicename>
networksetup -getgopherproxy <servicename>
networksetup -getsocksfirewallproxy <servicename>
网络设置工具可能还有其他用途,可以为您提供您正在使用的特定代理,只需查找 "man networksetup" 即可查看所有详细信息和用途。
方法三
终端不使用网络首选项窗格中配置的代理设置,因为它不进行任何连接。终端只是让您发出将以不同方式使用网络的命令。
export http_proxy="username:password@proxyserver:port"
我写了一个 little tool 正是这样做的。用法很简单。
- 用xCode编译它。
添加:
eval `./path/to/export-proxies`
您的 .profile
、.bashrc
或 .bash_profile
。
它将为所有协议(HTTP、FTP、SOCKS)设置所有常用的代理环境变量($HTTP_PROXY
、$http_proxy
、$HttpProxy
等)包括 OS X 控制面板中定义的所有异常。
也随时欢迎提出建议和改进 ;)
编辑
我刚刚看到您想设置设置而不是阅读它们。到目前为止,我还没有找到一种方法来做到这一点。但很乐意学习其他方式...
我如何通过终端为我的计算机添加和激活代理(无需进入系统偏好设置。)我可以用 scutil --proxy
以某种方式做到这一点吗?我 运行 OSX Yosemite 使用 MacBook Air
方法一
我们可以使用awk
解析scutil
的输出并提取代理配置。以下代码段可以解决问题:
$ export http_proxy=`scutil --proxy | awk '\
/HTTPEnable/ { enabled = ; } \
/HTTPProxy/ { server = ; } \
/HTTPPort/ { port = ; } \
END { if (enabled == "1") { print "http://" server ":" port; } }'`
$ export HTTP_PROXY="${http_proxy}"
此脚本在 scutil
的输出中查找 HTTPEnable
、HTTPProxy
和 HTTPPort
。如果启用了代理,脚本会打印出代理 URL 并将其设置为 http_proxy
环境变量。如果未启用代理,脚本会将 http_proxy
设置为空字符串。最后一行还设置了 HTTP_PROXY
环境变量,因为一些命令行应用程序使用它。
将此代码段放入您的 .bash_profile 可确保您的代理在有线和无线网络之间切换时保持自动配置。
方法二
您可以尝试创建一个 bash 登录脚本,该脚本使用 "networksetup" 的以下用途之一来列出当前代理,然后解析出服务器地址并将其应用于当前终端会话:
networksetup -getftpproxy <servicename>
networksetup -getwebproxy <servicename>
networksetup -getsecurewebproxy <servicename>
networksetup -getstreamingproxy <servicename>
networksetup -getgopherproxy <servicename>
networksetup -getsocksfirewallproxy <servicename>
网络设置工具可能还有其他用途,可以为您提供您正在使用的特定代理,只需查找 "man networksetup" 即可查看所有详细信息和用途。
方法三 终端不使用网络首选项窗格中配置的代理设置,因为它不进行任何连接。终端只是让您发出将以不同方式使用网络的命令。
export http_proxy="username:password@proxyserver:port"
我写了一个 little tool 正是这样做的。用法很简单。
- 用xCode编译它。
添加:
eval `./path/to/export-proxies`
您的
.profile
、.bashrc
或.bash_profile
。
它将为所有协议(HTTP、FTP、SOCKS)设置所有常用的代理环境变量($HTTP_PROXY
、$http_proxy
、$HttpProxy
等)包括 OS X 控制面板中定义的所有异常。
也随时欢迎提出建议和改进 ;)
编辑 我刚刚看到您想设置设置而不是阅读它们。到目前为止,我还没有找到一种方法来做到这一点。但很乐意学习其他方式...