#!/bin/bash

hostname=$1

if [ -z ${hostname} ];then
	echo "需要参数:主机名"
	exit
fi

if curl -o /tmp/ip_info http://154.39.243.118/network/${hostname} > /dev/null ;then
	sleep 1
else
	echo "未找到主机"
	exit
fi

cdir_info(){
	if [ $1 -eq 24 ];then
		echo "255.255.255.0 253"
	elif [ $1 -eq 25 ];then
		echo "255.255.255.128 125"
	elif [ $1 -eq 26 ];then
		echo "255.255.255.192 61"
	elif [ $1 -eq 27 ];then
		echo "255.255.255.224 29"
	elif [ $1 -eq 28 ];then
		echo "255.255.255.240 13"
	elif [ $1 -eq 29 ];then
		echo "255.255.255.248 5"
	fi
}




ifcfg_7(){
	network_nic=$(ip route show | awk '/default/{print$5}')
	mac=$(ip link show dev ${network_nic} | awk '/ether/{print$2}')
	echo -n > /etc/sysconfig/network-scripts/ifcfg-${network_nic}
	cat >> /etc/sysconfig/network-scripts/ifcfg-${network_nic} <<INTERFACE
TYPE=Ethernet
BOOTPROTO=static
HWADDR=${mac}
DEFROUTE=yes
NAME=${network_nic}
DEVICE=${network_nic}
ONBOOT=yes
INTERFACE
	for ip_info in $(cat /tmp/ip_info | grep -v "#");do
		net_card=$(echo ${ip_info} | awk -F[./] '{print$1"."$2"."$3}')
		let net_start=$(echo ${ip_info} | awk -F[./] '{print$4}')+2
		net_cdir=$(echo ${ip_info} | awk -F[./] '{print$5}')
		netmask=$(cdir_info ${net_cdir} | awk '{print$1}')
		ip_add_num=$(cdir_info ${net_cdir} | awk '{print$2}')
		for id in $(seq 1 ${ip_add_num});do
			cat >> /etc/sysconfig/network-scripts/ifcfg-${network_nic} <<INTERFACE
IPADDR${clonenum}=${net_card}.${net_start}
NETMASK${clonenum}=${netmask}
INTERFACE
			let net_start=${net_start}+1
			let clonenum=${clonenum}+1
		done
	done
	gateway=$(awk '/gateway/{print$2}' /tmp/ip_info)
	echo "GATEWAY=${gateway}">>/etc/sysconfig/network-scripts/ifcfg-${network_nic}
	echo "DNS1=8.8.8.8" >>/etc/sysconfig/network-scripts/ifcfg-${network_nic}
}





ifcfg_8(){
	network_nic=$(ip route show | awk '/default/{print$5}')
	mac=$(ip link show dev ${network_nic} | awk '/ether/{print$2}')
	echo -n > /etc/sysconfig/network-scripts/ifcfg-${network_nic}
	cat >> /etc/sysconfig/network-scripts/ifcfg-${network_nic} <<INTERFACE
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
HWADDR=${mac}
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=${network_nic}
DEVICE=${network_nic}
ONBOOT=yes
INTERFACE
	for ip_info in $(cat /tmp/ip_info | grep -v "#");do
		net_card=$(echo ${ip_info} | awk -F[./] '{print$1"."$2"."$3}')
		let net_start=$(echo ${ip_info} | awk -F[./] '{print$4}')+2
		net_cdir=$(echo ${ip_info} | awk -F[./] '{print$5}')
		netmask=$(cdir_info ${net_cdir} | awk '{print$1}')
		ip_add_num=$(cdir_info ${net_cdir} | awk '{print$2}')
		for id in $(seq 1 ${ip_add_num});do
			cat >> /etc/sysconfig/network-scripts/ifcfg-${network_nic} <<INTERFACE
IPADDR${clonenum}=${net_card}.${net_start}
NETMASK${clonenum}=${netmask}
INTERFACE
			let net_start=${net_start}+1
			let clonenum=${clonenum}+1
		done
	done
	gateway=$(awk '/gateway/{print$2}' /tmp/ip_info)
	echo "GATEWAY=${gateway}">>/etc/sysconfig/network-scripts/ifcfg-${network_nic}
	echo "DNS1=8.8.8.8" >>/etc/sysconfig/network-scripts/ifcfg-${network_nic}
}





netcfg(){
	net_conf_file=$(ls /etc/netplan/*.yaml)
	network_nic=$(ip route show | awk '/default/{print$5}')
	echo -n > ${net_conf_file}
	cat > ${net_conf_file} <<INTERFACE
network:
  version: 2
  renderer: networkd
  ethernets:
    ${network_nic}:
      addresses:
INTERFACE
	for ip_info in $(cat /tmp/ip_info | grep -v "#");do
		net_card=$(echo ${ip_info} | awk -F[./] '{print$1"."$2"."$3}')
		let net_start=$(echo ${ip_info} | awk -F[./] '{print$4}')+2
		net_cdir=$(echo ${ip_info} | awk -F[./] '{print$5}')
		netmask=$(cdir_info ${net_cdir} | awk '{print$1}')
		ip_add_num=$(cdir_info ${net_cdir} | awk '{print$2}')
		for id in $(seq 1 ${ip_add_num});do
			echo "        - ${net_card}.${net_start}/${net_cdir}" >> ${net_conf_file}
			let net_start=${net_start}+1
		done
	done
	gateway=$(awk '/gateway/{print$2}' /tmp/ip_info)
	cat >> ${net_conf_file} <<INTERFACE
      gateway4: ${gateway}
      nameservers:
        addresses:
          - 8.8.8.8
          - 114.114.114.114
INTERFACE
}





interface(){
	gateway=$(awk '/gateway/{print$2}' /tmp/ip_info)
	network_nic=$(ip route show | awk '/default/{print$5}')
	echo -n > /etc/network/interface
	for ip_info in $(cat /tmp/ip_info | grep -v "#");do
		net_card=$(echo ${ip_info} | awk -F[./] '{print$1"."$2"."$3}')
		let net_start=$(echo ${ip_info} | awk -F[./] '{print$4}')+2
		net_cdir=$(echo ${ip_info} | awk -F[./] '{print$5}')
		netmask=$(cdir_info ${net_cdir} | awk '{print$1}')
		ip_add_num=$(cdir_info ${net_cdir} | awk '{print$2}')
		for id in $(seq 1 ${ip_add_num});do
			cat >> /etc/network/interface <<INTERFACE
auto ${network_nic}:${clonenum}
iface ${network_nic}:${clonenum} inet static
  address ${net_card}.${net_start}
  netmask ${netmask}
INTERFACE
			if [ -z ${clonenum} ];then
				echo "  gateway ${gateway}" >> /etc/network/interface
			fi
			let net_start=${net_start}+1
			let clonenum=${clonenum}+1
		done
	done
}

if `grep "CentOS Linux release 7" /etc/redhat-release > /dev/null 2>&1`; then
	echo system Centos7
	ifcfg_7
elif `grep "CentOS Linux release 8" /etc/redhat-release > /dev/null 2>&1`; then
	echo system Centos8
	ifcfg_8
elif `egrep "ubuntu1~14|Ubuntu 16" /proc/version > /dev/null 2>&1`; then
	echo system ubuntu14-16
	interface
elif `egrep "Ubuntu 18|Ubuntu 20|Ubuntu 22" /etc/issue > /dev/null 2>&1`; then
	echo system ubuntu18-22
	netcfg
elif `egrep "Debian 8|Debian 10" /proc/version > /dev/null 2>&1`; then
	echo system debian10-11
	interface
fi
