centos6 多段Ip添加shell脚本
#!/bin/bash export device=`ifconfig|grep eth0|head -n 1|awk '{print ($1)}'` export ipcfg_pre="/etc/sysconfig/network-scripts/ifcfg-eth1-range" awktmp=`mktemp` msg=`mktemp` ip_txt=`mktemp` ifcfgs="$(find ${ipcfg_pre%/*} -name ${ipcfg_pre##*/}*)" if test ! -z "$ifcfgs";then echo "发现如下已有配置文件是否删除(yes/no)?" echo "$ifcfgs" select var in "yes" "no" do if test "$var" = "yes";then rm -f $ifcfgs break; else break; fi done fi #脚本保存进 临时文件 不再使用a.awk文件。 cat >$awktmp <<EOF #!/usr/bin/awk -f BEGIN{ ipcfg_pre="${ipcfg_pre}" #你需要修改 ipcfg_pre 为自己的路径前缀 device=ENVIRON["device"] clone_num=1; numofpc[24]=253 numofpc[24]=125 numofpc[26]=61 numofpc[27]=29 numofpc[28]=13 numofpc[29]=5 } function ip_str(iplist){ return sprintf("%s.%s.%s.%s",ip_list[1],ip_list[2],ip_list[3],ip_list[4]); } function gen_mask(num,mask_bin, _ARGVEND_,sum,bits){ #把掩码由数字转换成数组 _i=1; mask_bin[1]=0; for (;_i*8 <=num && _i<=4;_i++){ mask_bin[_i]=255; } bits=num-(_i-1)*8; sum=0; for(;bits>0;bits--){ sum=sum+2^(8-bits); } mask_bin[_i]=sum; _i++; for(;_i<=4;_i++){ mask_bin[_i]=0; } } { ipfile=sprintf("%s%s",ipcfg_pre,NR); split(\$0,ip,"/"); ip_mask=ip[2]; split(ip[1],ip_list,"."); #ip_list 列表保存了 ip 的四个 字节值 ip_start=ip_list[4]+2; ip_end=ip_start+numofpc[ip_mask]-1; printf("DEVICE=%s\n",device)>ipfile printf("BOOTPROTO=static\n")>>ipfile printf("CLONENUM_START=%d\n",clone_num)>>ipfile ip_list[4]=ip_start; printf("IPADDR_START=%s\n",ip_str(ip_list))>>ipfile ip_list[4]=ip_end; printf("IPADDR_END=%s\n",ip_str(ip_list))>>ipfile clone_num+=numofpc[ip_mask]; printf("ONBOOT=yes\n")>>ipfile gen_mask(ip_mask,ip_list) netmask=ip_str(ip_list) printf("NETMASK=%s\n",netmask)>>ipfile } EOF chmod a+x $awktmp msg=`mktemp` cat >$msg <<EOF 请输入IP地址和掩码每行一行(不可出现空白行) 如: 45.34.89.40/29 23.91.3.0/28 23.91.8.32/28 23.91.18.160/28 23.91.28.128/28 EOF vi +":!cat $msg" $ip_txt #service network restart test -e $ip_txt && awk -f $awktmp $ip_txt service network restart rm -f $awktmp $msg $ip_txt rm -f ipcfg.sh ===================================================== 此脚本只适用于 45.34.89.40/29 23.91.3.0/28 23.91.8.32/28 23.91.18.160/28 23.91.28.128/28 这种格式IP段添加,请注意脚本网卡名称和机器网卡名称是否一致 使用方法,命名为ipcfg.sh 1. 会提示IP文件是否已经存在,让选择是否删除。我们只用于第一次添加。尽量不要去补充添加。 2. 按回车键,然后按 i 进入编辑模式,输入IP段。iP段一个一行,不要有空格。 保存。