NETWORKアドレスとBROADCASTアドレスを取得するスクリプト

★「IPアドレス」と「サブネットマスク」の情報から「NETWORKアドレス」と「BROADCASTアドレス」を取得するスクリプト

#!/bin/sh

######################################################
# SET VARIABLE
######################################################
SHELL_NAME=`basename $0`
HOSTLIST=$1
NET_LST=$2
LOG=./log/GET_NWADDR.$$

######################################################
# SET ARGUMENT
######################################################
if [ $# -ne 2 ]; then
        echo "Usage : sh ${SHELL_NAME} <hostlist> <net.lst>"
        exit 1
fi

if [ ! -f ${HOSTLIST} ]; then
        echo "Error : File not found [${HOSTLIST}]"
        exit 1
fi

if [ ! -f ${NET_LST} ]; then
        echo "Error : File not found [${NET_LST}]"
        exit 1
fi

######################################################
# MAIN
######################################################
for HOST in `cat ${HOSTLIST}`
do
        echo --------------------------- ${HOST} ---------------------------                                      | tee -a ${LOG}
        ################################
        # CHECK HOSTNAME
        ################################
        grep -q ${HOST} ${NET_LST}
        if [ $? -ne 0 ]; then
                echo "Host is not found ${HOST}"                                                                  | tee -a ${LOG}
                echo                                                                                              | tee -a ${LOG}
                continue
        fi

        ################################
        # SET IPADDR & NETMASK
        ################################
        IPADDR=`grep ${HOST} ${NET_LST} | awk -F, '{print $2}'`
        NETMASK=`grep ${HOST} ${NET_LST} | awk -F, '{print $3}'`

        ################################
        # GET NETWORK & BROADCAST
        ################################

        NETWORK=`ipcalc -n ${IPADDR} ${NETMASK} | awk -F= '{print $2}'`
        BROADCAST=`ipcalc -b ${IPADDR} ${NETMASK} | awk -F= '{print $2}'`

        printf "%s\n%s\n%s\n%s\n" IPADDR=${IPADDR} NETMASK=${NETMASK} NETWORK=${NETWORK} BROADCAST=${BROADCAST}   | tee -a ${LOG}
        echo                                                                                                      | tee -a ${LOG}

done

1.ホストリストを作成

[root@ha-01 SHELL]# cat host.lst
hadoop-slave1
hadoop-slave2
hadoop-slave3
[root@ha-01 SHELL]# 

2.ホスト名、IPアドレスサブネットマスクをコンマで区切ったリストを作成

[root@ha-01 SHELL]# cat net.lst
hadoop-slave1,172.16.11.151,255.255.252.0
hadoop-slave2,192.168.11.152,255.255.255.0
hadoop-slave3,10.16.11.123,255.255.255.224
[root@ha-01 SHELL]#

3.実行結果

[root@ha-01 SHELL]# sh GET_NWADDR.sh host.lst net.lst
 --------------------------- hadoop-slave1 ---------------------------
IPADDR=172.16.11.151
NETMASK=255.255.252.0
NETWORK=172.16.8.0
BROADCAST=172.16.11.255

 --------------------------- hadoop-slave2 ---------------------------
IPADDR=192.168.11.152
NETMASK=255.255.255.0
NETWORK=192.168.11.0
BROADCAST=192.168.11.255

 --------------------------- hadoop-slave3 ---------------------------
IPADDR=10.16.11.123
NETMASK=255.255.255.224
NETWORK=10.16.11.96
BROADCAST=10.16.11.127

[root@ha-01 SHELL]#