2010-10-27 42 views
32

在OS X中,通過檢查Web代理(HTTP)並指定以下代碼,從系統首選項>網絡>代理打開和關閉Web代理。 Web代理服務器等,然後單擊確定,然後單擊「應用」。這是太多的步驟。有沒有辦法從命令行和shell腳本完成這一切?如何通過命令行在OS x中打開和關閉Web代理

回答

34

未認證代理(並假設這是你要配置的以太網服務):

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以獲得正確的名稱。

+0

不應該與'on'而不是'off'第一個命令結束了嗎? – unpossible 2015-04-23 18:05:42

+1

@mejpark「off」和「on」關鍵字是指認證,而不是代理設置本身是打開還是關閉。 – 2015-04-23 20:29:52

5

爲了在OSX Mavericks中打開/關閉我的代理服務器,我設置了這個腳本。請注意,這個例子只會影響我的Wi-Fi適配器。我一次性打開/關閉Web,流媒體和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 

現在,您可以切換對代理在命令/關閉line:

bash prox-toggle 
+0

@ potato-eat-apple寫道:埃裏克感謝您的腳本,一個問題:它總是彈出我鍵入我的機器密碼。如何避免這種情況? – 2017-11-15 07:26:54

0

只是切換:)

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 
2

我編寫了一個腳本命名代理,可能會幫助,

#!/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文件中/usr/local/bin.
  2. 複製上面的腳本到使用sudo chmod 777 proxy文件proxy.
  3. 設置可執行權限。

如何使用:

proxy on 
proxy off 
+1

太棒了。我爲HTTP代理添加了networksetup -setwebproxystate「$ NETWORK_SERVICE_NAME」:) – 2017-12-14 12:38:00

相關問題