プロキシを使用しているネットワークにいます。私はあちこちにたくさんのスクリプトを使用するマシンをHTTP経由で相互にアクセスしています。
私のプロキシは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には2つのオプションがあります。
1)各IPを完全に追加します。
printf -v no_proxy '%s,' 10.1.{1..255}.{1..255};
export no_proxy="${no_proxy%,}";
2)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;
info wget
さんのコメント:
`no_proxy'
This variable should contain a comma-separated list of domain
extensions proxy should _not_ be used for. For instance, if the
value of `no_proxy' is `.mit.edu', proxy will not be used to
retrieve documents from MIT.
したがって、変数にはIP範囲ではなくドメインのリストを含める必要があります。ローカルマシンの適切なローカルエイリアスを/etc/hosts
ファイルに設定する必要があります。
これとは別に、環境変数を設定しても、プロキシが使用される、または使用されないという保証は行われないことに注意してください。 mayをサポートするプログラムが使用する情報です。
以下は、janmoesenのソリューションに基づいた、少し単純な(1行の)アプローチです。
export no_proxy=`echo 10.1.1.{1..255} | sed 's/ /,/g'`
これは、Cory Ringdahlの入力に基づいてさらに改善されました。
export no_proxy="`echo 10.1.1.{1..254},` 10.1.1.255"
sedは10.1.{1..255}.{1..255}
の展開から渡されたすべての引数について、彼のコードまたは私のいずれかでチョークを使用しています。したがって、本当に256 * 256のIPアドレスに拡張する必要がある場合は、Cory Ringdahlのアプローチをさらに適合させることができるかもしれませんが、256程度しか必要ない場合は、これらのいずれかが完全に機能するはずです。
2オクテットが拡張されたバージョンは次のようになると思います。
export no_proxy="`echo 10.1.{1..255}.{1..254},` 10.1.255.255"
しかし、iTermは引数リストが長すぎるというエラーを表示しているので、これを機能させるための解決策があるかどうか確かには言えません...
正確な解決策ではありませんが、問題を解決する可能性があります。プロキシの外部から何かにアクセスする場合、IPアドレスを直接使用せずにDNS名を使用すると想定する場合は、次のように設定できます。
export no_proxy=0,1,2,3,4,5,6,7,8,9
私の知る限り、トップドメインは数字で終わっていないので、数字の場合、それはIPアドレスである必要があります。