Bash
在 no_proxy 環境變數中設置網路範圍
我在使用代理的網路中。我讓機器在這里和那裡使用大量腳本通過 HTTP 相互訪問。
- 網路是 10.0.0.0/8。
- 我的代理是 10.1.1.1:81,所以我進行了相應的設置:
export http_proxy=http://10.1.1.1:81/
- 我想排除我自己的範圍以使用代理訪問。我嘗試了任何可用的組合。
export no_proxy='10.*' export no_proxy='10.*.*.*' export no_proxy='10.0.0.0/8'
以上都不行!
我正在測試
wget
它總是嘗試查詢代理,無論我想連接什麼IP地址。
- 由於所有系統中到處都有大量腳本,因此該
--no-proxy
選項實際上不是一個選項。我想在系統範圍內設置它。
你以錯誤的方式看待它。
no_proxy
環境變數列出域後綴,而不是前綴。從文件中:
no_proxy
:此變數應包含一個逗號分隔的域擴展代理列表,不應使用它。因此,對於 IP,您有兩種選擇:
1)完整添加每個IP:
printf -v no_proxy '%s,' 10.1.{1..255}.{1..255}; export no_proxy="${no_proxy%,}";
- 重命名
wget
並wget-original
編寫一個包裝腳本(稱為wget
),查找給定 URL 主機的 IP,並確定它是否應該使用代理:#!/bin/bash ip=''; for arg; do # parse arg; if it's a URL, determine the IP address done; if [[ "$ip" =~ ^10\.1\. ]]; then wget-original --no-proxy "$@"; else wget-original "$@"; fi;