centos6 多段Ip添加脚本
#!/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添加脚本的更多相关文章
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- [原创]开源跨平台大型网络端口扫描器K8PortScan(支持批量A段/B段/C段/IP列表)
0x000 K8PortScan Python版Cscan端口扫描器 Code: https://github.com/k8gege/K8PortScan K8portScan 1.0 Date: 2 ...
- VMware 非简易安装centos6(静态ip配置)
1.选择新建虚拟机 在弹出框中我选择推荐安装 然后点击下一步 2.选择稍后安装操作系统(不然会默认简易安装) 接着一直下一步就可以了,最后到这个页面 4.如下图选择事先下载好的安装文件 5.配置桥接模 ...
- 通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标
关键词: Arcpy,ArcMap Toolbox, Coordinates of Polygon 需求分析: Arcmap中添加有三个图层:图层“GY乡级河道”(面图层)是全县13个乡镇全部的乡级河 ...
- Linux下批量ping某个网段ip的脚本
比如现在需要对172.16.50.0/24网段的ip进行检查,检查哪些ip现在被占用,哪些ip没有被占用,可以通过ping命令来检查,脚本如下: [root@uatdns01 opt]# vim /o ...
- Unity3d创建物体,寻找物体,加载物体,添加脚本
GetCreateObject: using UnityEngine; public class GetCreateObject : MonoBehaviour { GameObject emptyG ...
- CentOS6配置静态IP
CentOS6配置静态IP 1. 编辑网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=不需要改 TYPE=Et ...
- 写了个爬虫代理ip的脚本给大家使用
写了个爬虫代理ip的脚本给大家使用 一.代码 import requests from lxml.html import etree url = 'http://www.kuaidaili.com/f ...
- 修改host指定域名指向ip,Windows脚本与Linux脚本
修改host指定域名指向ip,Windows脚本与Linux脚本 一,Windows系统修改hosts文件 Windows系统下hosts文件位置:C:\Windows\System32\driver ...
随机推荐
- GetWindowText 卡死的一种可能的原因
最近一个项目中碰到GetWindowText经常卡死的问题,这个项目有多个线程,检查代码发现发生死锁的是一个数据线程和一个UI线程. 示意图大致如下(data thread和UI thread在同一个 ...
- PHP中mysql_fetch_row()、mysql_fetch_assoc()和mysql_fetch_array()的联系
总是记不住或者混淆mysql_fetch_row().mysql_fetch_assoc()和mysql_fetch_array()这三个函数的朋友们注意了,今天我在这里给大家总结一下他们之间的关系, ...
- 关于webpack打包js和css
废话不多说,直接贴出代码,大家瞅瞅:其中要引用css的话是要用css-loader.用了之后再webpack.config.js里面配置相应的代码,并且在相应的js文件里面引用即可啦,不知道有哪位大神 ...
- C# 中正则表达式 Group 分组
在一个正则表达式中,如果要提取出多个不同的部分(子表达式项),需要用到分组功能. 在 C# 正则表达式中,Regex 成员关系如下,其中 Group 是其分组处理类. Regex –> Matc ...
- 《挑战程序设计竞赛》2.1 穷竭搜索 POJ2718 POJ3187 POJ3050 AOJ0525
POJ2718 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6509 Acce ...
- 剖析与优化 Go 的 web 应用
https://mp.weixin.qq.com/s/HDsbZLOK3h8-XjejvPH2sA https://studygolang.com/articles/12685
- 动态加载和卸载 DLL
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- android studio DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs 参考https://stackoverflow.com/questions/38892 ...
- 自定义gradle plugin
最近开始接触gradle 正好有个需求apidoc
- 剑指offer 面试40题
面试40题: 题目:最小的k个数 题:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解题代码一: # -*- coding ...