Bash - IPアドレスを増やしますが、サブネットマスクを考慮しますか?

Bash - IPアドレスを増やしますが、サブネットマスクを考慮しますか?

VPNクライアントに設定した最後の使用ローカルIPアドレスを格納するファイルがあります。新しいクライアントを追加するプロセスを自動化しているので、前のクライアントで使用されていたIPを読み取り、次のクライアントで使用されているアドレスを増やしたいと思います。

ただし、これは使用されるサブネットに敏感でなければなりません。 10.0.0.0 RFC 1918プライベートネットワークに/ 8サブネットを使用しています。

したがって、最後のクライアントのIPが10.0.0.5であると仮定します。増加した後は10.0.0.6を取得する必要があります。

最後のクライアントIPが10.0.0.254に達した場合は、10.0.0.255に増加する代わりに10.0.1.1を取得する必要があります。サブネットは、クライアントが使用する先行バイト(10.)を除くすべてのオクテットを提供するため、フルスコープに対してこれを行う必要があります。例:

10.0.1.254以降 - > 10.0.2.1

10.0.254.254以降 -> 10.1.0.1

私はこれを行う最も簡単な方法を探しています。ライナーでできますか?

ベストアンサー1

たとえば、有効なIPアドレスを許可する場合は、10.0.1.0/810.0.255.255/8のように単調増加する32ビット整数を使用できます。

# Seed with 10.0.0.0 = 167772160
echo $(( (10<<24) + (0<<16) + (0<<8) + 0 )) >counter

# Read the counter, increment, and produce IP address
read ip <counter
echo $((++ip)) >counter

printf "%d.%d.%d.%d\n" $(( (ip>>24)&255 )) $(( (ip>>16)&255 )) $(( (ip>>8)&255 )) $((ip&255))

おすすめ記事