如何从命令行在os x中打开和关闭Web代理

时间:2010-10-27 02:06:34

标签: macos networking proxy

在OS X中,您可以从“系统偏好设置”>中打开和关闭Web代理。网络>代理,通过检查Web代理(HTTP)和指定Web代理服务器等,然后单击确定,然后单击“应用”。这是太多的步骤。有没有办法从命令行和shell脚本中完成所有这些?

7 个答案:

答案 0 :(得分:35)

对于未经身份验证的代理(并假设它是您要配置的以太网服务):

networksetup -setwebproxy Ethernet proxy.example.net 80 off

用于验证:

networksetup -setwebproxy Ethernet proxy.example.net 80 on proxyuser "p4ssw0rd"

并将其关闭:

networksetup -setwebproxystate Ethernet off

如果网络服务的名称不仅仅是“以太网”,您可能需要解析networksetup -listallnetworkservices-listnetworkserviceorder以获取正确的名称。

答案 1 :(得分:6)

要在OSX Mavericks中打开/关闭我的代理,我设置了这个脚本。请注意,此示例仅影响我的Wi-Fi适配器。我正在同时打开/关闭网络,流媒体和SOCKS代理。您也可以按照Gordon's example设置代理地址,但我已经通过系统偏好设置>保存了这个地址。网络>代理GUI。

BASH脚本,保存为 prox.sh

#!/bin/bash

e=$(networksetup -getwebproxy wi-fi | grep "No")

if [ -n "$e" ]; then
  echo "Turning on proxy"
  sudo networksetup -setstreamingproxystate wi-fi on
  sudo networksetup -setsocksfirewallproxystate wi-fi on
  sudo networksetup -setwebproxystate wi-fi on
else
  echo "Turning off proxy"
  sudo networksetup -setstreamingproxystate wi-fi off
  sudo networksetup -setsocksfirewallproxystate wi-fi off
  sudo networksetup -setwebproxystate wi-fi off
fi

然后在命令行上对脚本进行符号链接:

ln -s /Script/Location/prox.sh prox-toggle

现在,您可以在命令行上打开/关闭代理:

bash prox-toggle

答案 2 :(得分:3)

我准备了一个名为proxy的脚本,可能有帮助,

#!/bin/bash
#
#
#   Author: Md. Sazzad Hissain Khan
#   Date:   8 July, 2017
#
#

NETWORK_SERVICE_NAME="Ethernet"

if [ "$#" -ne 1 ]; then
    echo "Argument missing [on/off]"
    exit 0
fi

if [ $1 == "on" ]; then
    echo "Enabling secure proxy for $NETWORK_SERVICE_NAME"
    networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" on
elif [ $1 == "off" ]; then
    echo "Disabling secure proxy for $NETWORK_SERVICE_NAME"
    networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" off
else
    echo "Argument invalid [permitted:on/off]"
fi

NETWORK_SERVICE_NAME是您需要配置的活动网络的名称。

  1. proxy
  2. 中创建/usr/local/bin.个文件
  3. 将以上脚本复制到proxy.
  4. 使用sudo chmod 777 proxy设置文件的可执行权限。
  5. 使用方法:

    proxy on
    proxy off
    

答案 3 :(得分:2)

这是一个在macworld上打开和关闭代理的Applescript。

答案 4 :(得分:1)

只是切换:)

networksetup -setwebproxystate <networkservice> <on off>
networksetup -setsecurewebproxystate <networkservice> <on off>

示例:

networksetup -setwebproxystate  Wi-Fi on
networksetup -setsecurewebproxystate  Wi-Fi on

要处理修改提醒:前缀sudo,如

sudo networksetup -setwebproxystate  Wi-Fi on
sudo networksetup -setsecurewebproxystate  Wi-Fi on

答案 5 :(得分:0)

使用键盘快捷键启用和禁用代理

在终端中,您可以使用以下命令打开和关闭wifi代理

networksetup -setwebproxystate Wi-Fi <on | off>
networksetup -setsecurewebproxystate Wi-Fi <on | off>

和以太网

networksetup -setwebproxystate Ethernet <on | off>
networksetup -setsecurewebproxystate Ethernet <on | off>

这是在打开和关闭之间切换的单线(使用Wi-Fi示例)

e=$(networksetup -getwebproxy wi-fi | grep "No")

if [ -n "$e" ]; then
  networksetup -setwebproxystate  Wi-Fi on
  networksetup -setsecurewebproxystate  Wi-Fi on
else
  networksetup -setwebproxystate  Wi-Fi off
  networksetup -setsecurewebproxystate  Wi-Fi off
fi

创建运行Shell命令的键盘快捷键

  1. 启动Automator,并创建一个新服务。

  2. 在“任何应用程序”中将“接收到的服务选择为:”设置为“无输入”。

  3. 添加一个名为“ Run Shell Script”的操作。在“动作库”的“实用工具”部分。

  4. 将所需的bash命令插入文本框中,并使用“运行”按钮(右上方)测试运行它。它应该执行脚本执行的所有操作(关闭,打开或切换),并且动作下方应有绿色的勾。

  5. 保存它,为它提供一个您可以记住的服务名称。

  6. 转到“系统偏好设置”->“键盘”,然后转到“快捷方式”标签

  7. 转到“服务”部分,然后向下滚动至“常规”-您应该在此处找到您的服务。如果选择该行,则可以单击“添加快捷方式”并为其提供键盘快捷方式。

答案 6 :(得分:0)

由于我需要一个简单的脚本,可以同时打开/关闭HTTP和HTTPS代理,因此它是:

#!/usr/bin/env bash
# Toggles *both* HTTP and HTTP proxy for a preconfigured service name ("Wi-Fi" or "Ethernet").

NETWORK_SERVICE_NAME="Wi-Fi" # Wi-Fi | Ethernet

IS_PROXY_ENABLED=$(networksetup -getwebproxy "$NETWORK_SERVICE_NAME" | head -n 1 | grep Yes)

if [ -z "$IS_PROXY_ENABLED" ]; then
    echo "Enabling HTTP and HTTPs proxy for $NETWORK_SERVICE_NAME"
    networksetup -setstreamingproxystate "$NETWORK_SERVICE_NAME" on
    networksetup -setwebproxystate "$NETWORK_SERVICE_NAME" on
    networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" on
else
    echo "Disabling HTTP and HTTPs proxy for $NETWORK_SERVICE_NAME"
    networksetup -setstreamingproxystate "$NETWORK_SERVICE_NAME" off
    networksetup -setwebproxystate "$NETWORK_SERVICE_NAME" off
    networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" off
fi