#!/bin/sh # pmatch determines if 1st argument string is matched by 2nd argument pattern pmatch () { case $1 in $2) return 0;; # zero return code means string matched by pattern esac return 1 # non-zero return code means string not matched by pattern } # converts netmask CIDR fromat to x.x.x.x mask value maskfromprefix () { prefixlen=$1 maskval=$((0xffffffff>>(32-prefixlen)<<(32-prefixlen))) mask1=$((maskval >> 24)) mask2=$((maskval >> 16 & 0xff)) mask3=$((maskval >> 8 & 0xff)) mask4=$((maskval & 0xff)) echo $mask1.$mask2.$mask3.$mask4 NETMASK=$mask1.$mask2.$mask3.$mask4 } network_ipv4calc () { # Returns the network value needed for Ubuntu /etc/network/interface file # $1 must be the IP Address # $2 must be the Netmask value IP_1=`echo $1 | cut -d . -f 1` IP_2=`echo $1 | cut -d . -f 2` IP_3=`echo $1 | cut -d . -f 3` IP_4=`echo $1 | cut -d . -f 4` NETM_1=`echo $2 | cut -d . -f 1` NETM_2=`echo $2 | cut -d . -f 2` NETM_3=`echo $2 | cut -d . -f 3` NETM_4=`echo $2 | cut -d . -f 4` NET_1=$(($IP_1 & $NETM_1)) NET_2=$(($IP_2 & $NETM_2)) NET_3=$(($IP_3 & $NETM_3)) NET_4=$(($IP_4 & $NETM_4)) NETWORK="$NET_1.$NET_2.$NET_3.$NET_4" echo $NETWORK } defgw=`ip route | grep default | awk '{print $3}'` if ( pmatch $OSVER "ubuntu*" ) then echo `hostname` >/etc/hostname mv /etc/network/interfaces /etc/network/interfaces.old # this file will be filled up next elif [ -f /etc/SuSE-release ] then #SLES9 and SLES10, uses /etc/sysconfig/network/ifcfg-eth-id- #SLES11, uses /etc/sysconfig/network/ifcfg-eth NICFILEPRE="/etc/sysconfig/network/ifcfg-" echo `hostname` > /etc/HOSTNAME if [ ! -z "$defgw" ]; then echo "default $defgw - -" > /etc/sysconfig/routes fi else #RedHat uses /etc/sysconfig/network-scripts/ifcfg-eth NICFILEPRE="/etc/sysconfig/network-scripts/ifcfg-" if [ -f "/etc/hostname" ]; then # for rh7 echo `hostname` >/etc/hostname else sed -i "s/HOSTNAME.*/HOSTNAME=`hostname`/" /etc/sysconfig/network fi if [ ! -z "$defgw" ]; then echo "GATEWAY=$defgw" >> /etc/sysconfig/network fi fi for nic in `ip link |grep "BROADCAST" |awk '{print $2}' | sed s/://`; do IPADDRMASK=`ip addr show dev $nic | grep inet | grep -v inet6 | awk '{print $2}' | head -n 1` IPADDR=`echo $IPADDRMASK | awk -F'/' '{print $1}'` [ -z $IPADDR ] && continue PREFIXMASK=`echo $IPADDRMASK | awk -F'/' '{print $2}'` # converts to x.x.x.x mask value maskfromprefix $PREFIXMASK if ( pmatch $OSVER "ubuntu*" ) then NETWORK=`network_ipv4calc $IPADDR $NETMASK` #BROADCAST=`ifconfig $nic | grep Bcast | awk '{print $3}' | awk -F: '{print $2}'` BROADCAST=`ip -4 -oneline addr show $nic|grep brd| awk -F ' ' '{print $6}'` if [ ! -z "$defgw" ]; then gateway_line="gateway $defgw" else gateway_line="" fi # add info to interfaces file on ubuntu, TBD does unbuntu change to systemd, this will not exist cat >>/etc/network/interfaces </dev/null if [ $? -eq 0 ] then sed -i '/IPADDR=/d' $NICFILE fi echo IPADDR=$IPADDR >> $NICFILE grep ^NETMASK= $NICFILE >/dev/null if [ $? -eq 0 ] then sed -i '/NETMASK=/d' $NICFILE fi echo NETMASK=$NETMASK >> $NICFILE fi #for netboot/statelite case, restart the network interface. For diskful installation, it is not necessary because the restart of the network will happen at the first boot. if [ "$NODESETSTATE" = "netboot" ] || [ "$NODESETSTATE" = "statelite" ] then ifdown $nic ifup $nic fi done if ( pmatch $OSVER "ubuntu*") then cat >>/etc/network/interfaces <