2017-11-11 23 views
-3

ファイル内にCIDR範囲のリストがあります。 一部のプログラムは有効である場合は「整形式」ではありませんが、一部のプログラムでは受け付けない場合があります。cidr ip範囲をbashスクリプトとして入力する方法

例:4オクテットがある場合は、この場合には、それがチェックする必要があり、そう192.168.0.0/24

:192.168/24

はに解決します。 そうでない場合、スクリプトは欠落しているものごとに.0を適用する必要があります。

1.1.1/24は1.1.1.0/24

2.2/16は2.2.0.0/16 なるなる...

答えて

0

:-)

おかげトリック

あります
  1. (部分)アドレスを配列に分割する
  2. 配列の最後に4つのゼロを追加する
  3. 得られた配列の最初の4つの要素を取り、例えば.

と再結合:

cidr=192.168/24 
IFS=. read -a octets <<< "${cidr%/*}" 
octets+=(0 0 0 0) 
printf -v network "%d.%d.%d.%d" "${octets[@]:0:4}" 
printf '%s/%d\n' "$network" "${cidr#*/}" 

そうでない場合、

関連する問題