#!/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段一个一行,不要有空格。 保存。

centos6 多段Ip添加脚本的更多相关文章

  1. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  2. [原创]开源跨平台大型网络端口扫描器K8PortScan(支持批量A段/B段/C段/IP列表)

    0x000 K8PortScan Python版Cscan端口扫描器 Code: https://github.com/k8gege/K8PortScan K8portScan 1.0 Date: 2 ...

  3. VMware 非简易安装centos6(静态ip配置)

    1.选择新建虚拟机 在弹出框中我选择推荐安装 然后点击下一步 2.选择稍后安装操作系统(不然会默认简易安装) 接着一直下一步就可以了,最后到这个页面 4.如下图选择事先下载好的安装文件 5.配置桥接模 ...

  4. 通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标

    关键词: Arcpy,ArcMap Toolbox, Coordinates of Polygon 需求分析: Arcmap中添加有三个图层:图层“GY乡级河道”(面图层)是全县13个乡镇全部的乡级河 ...

  5. Linux下批量ping某个网段ip的脚本

    比如现在需要对172.16.50.0/24网段的ip进行检查,检查哪些ip现在被占用,哪些ip没有被占用,可以通过ping命令来检查,脚本如下: [root@uatdns01 opt]# vim /o ...

  6. Unity3d创建物体,寻找物体,加载物体,添加脚本

    GetCreateObject: using UnityEngine; public class GetCreateObject : MonoBehaviour { GameObject emptyG ...

  7. CentOS6配置静态IP

    CentOS6配置静态IP 1. 编辑网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=不需要改 TYPE=Et ...

  8. 写了个爬虫代理ip的脚本给大家使用

    写了个爬虫代理ip的脚本给大家使用 一.代码 import requests from lxml.html import etree url = 'http://www.kuaidaili.com/f ...

  9. 修改host指定域名指向ip,Windows脚本与Linux脚本

    修改host指定域名指向ip,Windows脚本与Linux脚本 一,Windows系统修改hosts文件 Windows系统下hosts文件位置:C:\Windows\System32\driver ...

随机推荐

  1. spring cloud 订单调用用户

    下面实现一个订单调用用户实现例子,使用技术只要是spring,为以后操作负载打基础.(基于昨天别人问我的基础上做了实例供大家参考) 1.用户工程截图 : 2.用户工程启动类 3.用户工程控制类 4. ...

  2. jodis遇到的问题

    1. Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper java找jar ...

  3. 5-1、easyUI-菜单与按钮(上节问题与解决)

    首先把上节的代码copy过来,如下: <html> <head> <meta http-equiv="Content-Type" content=&q ...

  4. windows Objective-C模拟环境搭建

    安装GNUstep GNUstep Windows Installer提供了Windows平台下的Objective-C的模拟开发环境,一共有四个软件包,其中GNUstep System和GNUste ...

  5. hdu 3667 (拆边 mcmf)

    注意题目中 边的容量 <= 5.可以把费用权值 a *f ^2化归成 a * f2, 即第一条边费用为 1 * a, 第二条 为 (4 - 1) * a, 第三条为 (9  - 4) * a.. ...

  6. eclipse下设置tomcat,修改Java代码不必重启tomcat

    1.本文目的:用tomcat进行web开发时,修改Java代码往往要重启代码,当工程较大启动较慢时,严重影响效率,本文通过eclipse下tomcat开发和发布web程序时,对一些Java代码一般修改 ...

  7. javascript基础(整理自手册网)

    变量 person=null; //清空变量 carname="Volvo"; //赋值给未声明的变量, 它将会变成全局变量, 即使在函数内部 window.carnam; //所 ...

  8. docker desktop

    https://github.com/rogaha/docker-desktop http://blog.csdn.net/tinylab/article/details/45443563

  9. Map.Entry<K,V>分析

    一.好处 你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦? Set keys = map.keySet( ); if(keys != null) { Iterator iterator ...

  10. Python排列组合

    product 笛卡尔积 (有放回抽样排列) permutations 排列 (不放回抽样排列) combinations 组合,没有重复 (不放回抽样组合) combinations_with_re ...