• 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 ",device)>ipfile
    printf("BOOTPROTO=static ")>>ipfile
    printf("CLONENUM_START=%d ",clone_num)>>ipfile
    ip_list[4]=ip_start;
    printf("IPADDR_START=%s ",ip_str(ip_list))>>ipfile
    ip_list[4]=ip_end;
    printf("IPADDR_END=%s ",ip_str(ip_list))>>ipfile
    clone_num+=numofpc[ip_mask];
    printf("ONBOOT=yes ")>>ipfile
    gen_mask(ip_mask,ip_list)
    netmask=ip_str(ip_list)
    printf("NETMASK=%s ",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段一个一行,不要有空格。 保存。

  • 相关阅读:
    go语言教程零基础入门到精通
    php探针文件内容
    一篇文章揭穿创业公司的套路
    Google资深工程师深度讲解Go语言面向接口(五)
    完全解析<atlalloc.h>
    巧妙的Section — — 剖析ATL OBJECT_MAP的自动建立
    ATL中的各种CriticalSection
    C++中的INL
    如何剖析一个类
    ATL线程模型解析
  • 原文地址:https://www.cnblogs.com/yunweis/p/7727195.html
Copyright © 2020-2023  润新知