#!/bin/bash # Copyright (c) 2015-2017, Parallels International GmbH # Copyright (c) 2017-2019 Virtuozzo International GmbH. All rights reserved. # # This script configure IP alias(es) inside SuSE like VM. # # Parameters: <dev> <MAC_addr> <IPs> # <dev> - name of device. (example: eth2) # <MAC_addr> - MAC address of device # <IP/MASKs> - IP address(es) with MASK # (example: 192.169.1.30/255.255.255.0) # (several addresses should be divided by space) # prog="$0" path="${prog%/*}" funcs="$path/functions" if [ -f "$funcs" ] ; then . $funcs else echo "Program $0" echo "'$funcs' was not found" exit 1 fi ETH_DEV=$1 ETH_MAC=$2 IP_MASKS=$3 OPTIONS=$4 ETH_DEV_CFG=ifcfg-$ETH_DEV IFNUM=-1 IFCFG_DIR=/etc/sysconfig/network/ IFCFG=${IFCFG_DIR}/${ETH_DEV_CFG} set_options "${OPTIONS}" function create_config() { local ip=$1 local mask=$2 local ifnum=$3 local ifcfg=$4 [ -z "${ip}" ] && \ error "Empty value of IP" [ "${ip}" == "remove" ] && ip="" [ -z "${mask}" ] && \ error "Empty value of MASK" local dhcp_type="static" if [ $USE_DHCPV4 -eq 1 -a $USE_DHCPV6 -eq 1 ]; then dhcp_type="dhcp" elif grep -qi "^[[:space:]]*VERSION.*1[1-9]" /etc/SuSE-release ; then # Only SUSE 11 and up supports explicit dhcp4 / dhcp6 [ $USE_DHCPV4 -eq 1 ] && dhcp_type="dhcp4" [ $USE_DHCPV6 -eq 1 ] && dhcp_type="dhcp6" else [ $USE_DHCPV4 -eq 1 ] && dhcp_type="dhcp" fi echo "BOOTPROTO='${dhcp_type}' STARTMODE='auto' USERCONTROL='no' IPADDR=${ip}" > ${ifcfg} || \ error "Unable to create interface config file" ${VZ_FS_NO_DISK_SPACE} if ! is_ipv6 "${ip}" ; then echo "NETMASK=${mask}" >> ${ifcfg} else echo "PREFIXLEN=${mask}" >> ${ifcfg} fi } function add_alias() { local ip=$1 local mask=$2 local ifnum=$3 local ifcfg=$4 local cfg if [ ! -f ${ifcfg} ]; then create_config "$ip" "$mask" "0" "$ifcfg" return fi cfg="IPADDR_${ifnum}=${ip} LABEL_${ifnum}=${ifnum}" if ! is_ipv6 ${ip} ; then cfg="${cfg} NETMASK_${ifnum}=${mask}" else cfg="${cfg} PREFIXLEN_${ifnum}=${mask}" fi echo "${cfg}" >> ${ifcfg} || error "Unable to create interface config file ${ifcfg}" ${VZ_FS_NO_DISK_SPACE} } function move_configs() { cd ${IFCFG_DIR} || return 1 rm -rf ${ETH_DEV_CFG}* mv -f bak/* ${IFCFG_DIR}/ >/dev/null 2>&1 rm -rf ${IFCFG_DIR}/bak } function set_ip() { local ip_mask ip mask local new_ips local ifcfg="${IFCFG_DIR}/bak/${ETH_DEV_CFG}" rm -rf ${IFCFG_DIR}/bak/ >/dev/null 2>&1 mkdir -p ${IFCFG_DIR}/bak new_ips="${IP_MASKS}" for ip_mask in ${new_ips}; do let IFNUM=IFNUM+1 if echo ${ip_mask} | grep -q '/' ; then mask=${ip_mask##*/} else if is_ipv6 ${ip_mask} ; then mask="64" else mask='255.255.255.255' fi fi ip=${ip_mask%%/*} if [ ${IFNUM} -eq 0 ] ; then create_config "${ip}" "${mask}" "${IFNUM}" "${ifcfg}" else add_alias "${ip}" "${mask}" "${IFNUM}" "${ifcfg}" fi done /sbin/ifdown ${ETH_DEV} move_configs /sbin/ifup ${ETH_DEV} } get_suse_config_name $ETH_DEV $ETH_MAC set_ip exit 0 # end of script
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
debian-get_dhcp.sh | File | 1.32 KB | 0755 |
|
debian-netplan_restart.sh | File | 439 B | 0755 |
|
debian-restart.sh | File | 1.34 KB | 0755 |
|
debian-set_dhcp.sh | File | 1.62 KB | 0755 |
|
debian-set_gateway.sh | File | 1.85 KB | 0755 |
|
debian-set_ip.sh | File | 4.35 KB | 0755 |
|
debian-set_route.sh | File | 2.06 KB | 0755 |
|
functions | File | 20.34 KB | 0755 |
|
netplan-cfg.py | File | 8.63 KB | 0755 |
|
netplan-cfg.pyc | File | 10.45 KB | 0644 |
|
netplan-cfg.pyo | File | 10.45 KB | 0644 |
|
nm-get_dhcp.sh | File | 834 B | 0755 |
|
nm-restart.sh | File | 488 B | 0755 |
|
nm-set_dhcp.sh | File | 1.23 KB | 0755 |
|
nm-set_dns.sh | File | 1.71 KB | 0755 |
|
nm-set_gateway.sh | File | 1.11 KB | 0755 |
|
nm-set_ip.sh | File | 3.02 KB | 0755 |
|
nm-set_route.sh | File | 1.12 KB | 0755 |
|
redhat-get_dhcp.sh | File | 1.58 KB | 0755 |
|
redhat-restart.sh | File | 429 B | 0755 |
|
redhat-set_dhcp.sh | File | 2 KB | 0755 |
|
redhat-set_gateway.sh | File | 1.54 KB | 0755 |
|
redhat-set_ip.sh | File | 5.36 KB | 0755 |
|
redhat-set_route.sh | File | 1.33 KB | 0755 |
|
set_dns.sh | File | 4.03 KB | 0755 |
|
suse-get_dhcp.sh | File | 1 KB | 0755 |
|
suse-restart.sh | File | 255 B | 0755 |
|
suse-set_dhcp.sh | File | 1.7 KB | 0755 |
|
suse-set_gateway.sh | File | 970 B | 0755 |
|
suse-set_ip.sh | File | 3.01 KB | 0755 |
|
suse-set_route.sh | File | 1.12 KB | 0755 |
|