Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terminal 如何在OSX终端中配置代理_Terminal_Osx Yosemite - Fatal编程技术网

Terminal 如何在OSX终端中配置代理

Terminal 如何在OSX终端中配置代理,terminal,osx-yosemite,Terminal,Osx Yosemite,我如何通过终端为我的计算机添加和激活代理(无需进入系统首选项)。我可以用scutil--proxy以某种方式实现吗?我使用MacBook Air在OSX Yosemite上运行方法1 我们可以使用awk解析scutil的输出并提取代理配置。下面的代码片段实现了这一点: $ export http_proxy=`scutil --proxy | awk '\ /HTTPEnable/ { enabled = $3; } \ /HTTPProxy/ { server = $3; } \ /HTTPP

我如何通过终端为我的计算机添加和激活代理(无需进入系统首选项)。我可以用
scutil--proxy
以某种方式实现吗?我使用MacBook Air在OSX Yosemite上运行

方法1

我们可以使用
awk
解析
scutil
的输出并提取代理配置。下面的代码片段实现了这一点:

$ export http_proxy=`scutil --proxy | awk '\
/HTTPEnable/ { enabled = $3; } \
/HTTPProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }'`
$ export HTTP_PROXY="${http_proxy}"
此脚本在
scutil
的输出中查找
HTTPEnable
HTTPProxy
HTTPPort
。如果启用了代理,脚本将打印代理URL并将其设置为
http\u proxy
环境变量。如果未启用代理,脚本将
http\u proxy
设置为空字符串。最后一行还设置了
HTTP\u PROXY
环境变量,因为一些命令行应用程序使用该变量

将此代码段放在.bash_配置文件中可确保在有线和无线网络之间切换时,代理将保持自动配置状态

方法2

您可以尝试创建一个bash登录脚本,该脚本使用“networksetup”的以下用法之一列出当前代理,然后解析出服务器地址并将其应用于当前终端会话:

networksetup -getftpproxy <servicename>
networksetup -getwebproxy <servicename>
networksetup -getsecurewebproxy <servicename>
networksetup -getstreamingproxy <servicename>
networksetup -getgopherproxy <servicename>
networksetup -getsocksfirewallproxy <servicename>
参考资料:

我写了一篇文章,就是这样做的。用法很简单

  • 用xCode编译它
  • 加:

    eval `./path/to/export-proxies`
    
    到您的
    .profile
    .bashrc
    .bash\u profile

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

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

    编辑
    我刚才看到你想设置设置而不是读取设置。到目前为止,我还没有找到这样做的方法。但我很乐意了解其他情况……

    为什么这是一个公认的答案?它解释了如何解析当前设置,而不是如何设置,实际上,您可以使用方法2实现这一点。您可以在此处找到一些详细信息:使用
    networksetup-setwebproxystate Thunderbolt\Ethernet on
    打开/关闭“Thunderbolt Ethernet”使用
    networksetup-setwebproxy Thunderbolt\Ethernet localhost 8080
    将“Thunderbolt Ethernet”主机设置为localhost,将端口设置为8080使用
    网络设置
    查看帮助信息
    eval `./path/to/export-proxies`