The scripts that I am sharing are used to do the DB2 pureScale install on 'n' number of hosts. One of the issue is to have consistent /etc/hosts file on all nodes.
The input file is ip.txt similar to the previous posts.
Script to generate and copy hosts file to all hosts
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [ $# -lt 1 ] ; then
echo "Usage: $0 "
exit 1
fi
function runrcmd ()
{
expect -c "
set timeout 2
spawn $1
expect eof { return ; }
expect \"yes/no\" { send \"yes\r\" }
expect \"*Password:*\" { send \"$rootpassword\r\" }
expect \"(.*)\r\"
"
}
SCHOME=./backup
IPFILE=$SCHOME/ip.txt
HOSTFILE=/tmp/hosts
HOSTHEAD=$SCHOME/hosts.head
LOGFILE=
#################### Fix ip.txt ###################
/usr/bin/dos2unix $IPFILE
###############################################################
############ Fix hosts file #################
sed -i /50000/d /etc/services
cat $HOSTHEAD > $HOSTFILE
while read a b c d
do
NM=${d%%.*}
echo $b $d $NM >> $HOSTFILE
done < $IPFILE
#############################################
############### Build server list from ip.txt #####
i=0
while read a b c d
do
SHORTNM=${d%%.*}
servers[$i]=$b
((i++))
done < $IPFILE
echo "server list " ${servers[@]}
###################################################
########## Copy hosts to each server ##############
for ((i = 0; i < ${#servers[@]}; ++i));
do
server=${servers[$i]};
echo Copy generated hosts file to $server
runrcmd "/usr/bin/scp $HOSTFILE $server:/etc/hosts"
done
###################################################
Download the script here.