ACC SHELL

Path : /var/lib/ntp/var/lib/ntp/proc/self/root/lib/mkinitrd/bin/
File Upload :
Current File : //var/lib/ntp/var/lib/ntp/proc/self/root/lib/mkinitrd/bin/ipconfig.sh

#!/bin/bash
# 
# <client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
#

# Calculate the prefix to a given netmask
calc_prefix() {
    local netmask=$1
    local prefix

    set -- $(IFS=.; echo $netmask)

    # Analyze each block
    prefix=0
    while [ "$1" ] && (( $1 == 255 )); do
        prefix=$(($prefix + 8))
        shift
    done
    # Bit-shift first non-zero block
    if [ "$1" ] && (( $1 > 0 )); then
        mask=$1
        prefix=$(($prefix + 8))
        while (( ($mask & 0x1) == 0 )) ; do
            mask=$(( $mask >> 1 ))
            prefix=$(($prefix - 1))
        done
    fi
    echo $prefix
}

ipcfg=$(echo $1 | sed 's/:/_:/g')

set -- $(IFS=: ; echo $ipcfg )

client=${1%%_}
shift
if [ "$1" != "_" ] ; then
    peer=${1%%_}
fi
shift
if [ "$1" != "_" ] ; then
    gateway=${1%%_}
fi
shift
if [ "$1" != "_" ] ; then
    netmask=${1%%_}
fi
shift
if [ "$1" != "_" ] ; then
    hostname=${1%%_}
fi
shift
if [ "$1" != "_" ] ; then
    dev=${1%%_}
else
    dev=eth0
fi
shift
if [ "$1" != "_" ] ; then
    mode=${1%%_}
fi
shift

# Calculate the prefix
prefix=${client%%*/}
if [ "$prefix" == "$client" ] ; then
    if [ -n "$netmask" ] ; then
        prefix=$(calc_prefix $netmask)
    else
        prefix=24
    fi
fi

# Configure the interface
if [ "$peer" ] ; then
    /sbin/ip addr add ${client} peer ${peer}/$prefix dev $dev
else
    /sbin/ip addr add ${client}/${prefix} dev $dev
fi
/sbin/ip link set $dev up

if [ "$gateway" ]; then
    /sbin/ip route add to default via ${gateway}
fi

ACC SHELL 2018