我将如何在 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 的输出中查找 HTTPEnableHTTPProxyHTTPPort。如果启用了代理,脚本会打印出代理 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"

参考:https://dmorgan.info/posts/mac-network-proxy-terminal/

我写了一个 little tool 正是这样做的。用法很简单。

  1. 用xCode编译它。
  2. 添加:

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

    您的 .profile.bashrc.bash_profile

它将为所有协议(HTTP、FTP、SOCKS)设置所有常用的代理环境变量($HTTP_PROXY$http_proxy$HttpProxy 等)包括 OS X 控制面板中定义的所有异常。

也随时欢迎提出建议和改进 ;)

编辑 我刚刚看到您想设置设置而不是阅读它们。到目前为止,我还没有找到一种方法来做到这一点。但很乐意学习其他方式...