LinuxコマンドラインでIPの最後の番号を変更する方法

LinuxコマンドラインでIPの最後の番号を変更する方法

変数として保存されたIPアドレスの最後の数字を変更しようとしています。

ip=$(ifconfig eth0 | grep "inet addr" | awk -F: '{print $2} | awk '{print $1}')

出力は次のようになりますが、192.168.0.1私が望むのは、変数を別の最後のオクテットに設定することです。192.168.0.2

ベストアンサー1

このnextip()シェル関数は最後の数字を変更して、次の可能なIPアドレスを出力します。

#!/bin/sh

nextip() {
        d=${1##*.}
        while true; do
                d=$(( (d+1) & 255 ))
                case $d in
                        0|255) ;;
                        *) break
                esac
        done
        echo ${1%.*}.$d
}

nextip 192.168.0.1
nextip 192.168.0.254

出力:

192.168.0.2
192.168.0.1

コマンド置換と一緒に使用できます。

ip1=$(ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
ip2=$(nextip $ip1)

おすすめ記事