no_proxy環境変数でネットワーク範囲を設定します。

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オプションは実際にはオプションではありません。システム全体に設定したいです。

ベストアンサー1

問題の見方が間違っています。環境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)URLが提供されているホストのIPを見つけ、プロキシを使用するかどうかを決定するラッパースクリプト(という)の名前を変更してwget作成します。wget-originalwget

#!/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;

おすすめ記事