140 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
PREFIXMASK#!/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-<mac>
 | 
						|
    #SLES11, uses /etc/sysconfig/network/ifcfg-eth<x>
 | 
						|
    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<x>
 | 
						|
    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}'`
 | 
						|
    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 <<EOF
 | 
						|
auto $nic
 | 
						|
iface $nic inet static
 | 
						|
    address $IPADDR
 | 
						|
    network $NETWORK
 | 
						|
    netmask $NETMASK
 | 
						|
    broadcast $BROADCAST
 | 
						|
    $gateway_line
 | 
						|
 | 
						|
 | 
						|
EOF
 | 
						|
    # not ubuntu
 | 
						|
    else
 | 
						|
        if [ -f ${NICFILEPRE}${nic} ]
 | 
						|
        then
 | 
						|
            NICFILE=${NICFILEPRE}${nic}
 | 
						|
        else
 | 
						|
            #mac=`ifconfig $nic|grep HWaddr|awk '{print $5}'|tr "[A-Z]" "[a-z]"`
 | 
						|
            mac=`ip link show $nic | grep ether | awk '{print $2}'`
 | 
						|
            NICFILE=${NICFILEPRE}eth-id-${mac}
 | 
						|
        fi
 | 
						|
        sed -i s/BOOTPROTO=dhcp/BOOTPROTO=static/ $NICFILE
 | 
						|
        sed -i s/BOOTPROTO=\'dhcp\'/BOOTPROTO=static/ $NICFILE
 | 
						|
        sed -i s/BOOTPROTO=\"dhcp\"/BOOTPROTO=static/ $NICFILE
 | 
						|
        echo IPADDR=$IPADDR >> $NICFILE
 | 
						|
        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 <<EOF
 | 
						|
auto lo
 | 
						|
iface lo inet loopback
 | 
						|
 | 
						|
 | 
						|
EOF
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 |