IPV4地址配置脚本

REDHAT|Centos IPV4地址配置一键化脚本

说明:该脚本依赖于ifconfig工具与nmcli工具,故仅支持redhat 7|Centos 7以上版本

#!/bin/bash
#   shellcheck disable=SC1091#
. /etc/init.d/functions
#声明索引数组
declare -a eth_name_list
#获取网卡名称
eth_name_list=$(ifconfig |sed -rn "s/(.*):.*/\1/p"|grep -v "[lo|^ ]")
#查看是否有nmcli软件
rpm -qa | grep -q -i "NetworkManager" || { action "没有nmcli" false;exit; }
#获取当前设备名称和IP地址
eth_list()
{
    #通过网卡名称获取IP地址和掩码
    a=0
    for i in $eth_name_list;do
        IP_config="$(ifconfig "$i" |grep -E -o "([1-9]{1,3}[.]){3}[0-9]{1,3}"|awk 'NR>1{print p}{p=$0}')"
        for j in $IP_config;do
            Net_num[$a]=$j
            (( a++ ))
        done
    done
    #形成列表列表
    n=0
    for k in $eth_name_list;do
        for (( m=$n;m<$a-1;m+=1 ));do
        echo "网卡名称:$k,IP地址:${Net_num[$m]};掩码:${Net_num[$m+1]}"
        break
        done
        (( n+=2 ))
    done
}
#输出网卡目录
echo -e "已启用网卡:\n$eth_name_list"
echo "显示当前已使用的网卡信息(未配置IP的不获取)"
eth_list
#获取网卡名称
read -r -p "input network name:" Net_name
#判断变量是否为空值
if [  -n "$Net_name" ];then
#判断网卡是否存在
awk -F":" 'NR>=3{print $1}' < /proc/net/dev |sed -rn 's/ +(.*)/\1/p'|grep -q "$Net_name" &&\
action "网卡存活" ||  { action "网卡存活" false;exit; }

#网卡模式:静态IP和自动获取
read -r -p "input model(manual|auto):" Model
        case "$Model" in
            manual|Manual)
                #获取IP地址,并判断格式是否合法
                read -r -p "input ipaddr:" IP 
                if [ -n "$IP" ] && [[ "$IP" =~ ([0-9]{1,3}[.]){3}[0-9]{1,3} ]];then
                    action "IP地址格式" || { action "IP地址格式" false;exit; }
                fi
                #生成网关
                Gatway="${IP%.*}.1"
                #使用nmcli命令配置IP
                nmcli con modify "$Net_name" ipv4.addresses "$IP"/24 ipv4.method "$Model"  gw4 "$Gatway" && \
                #激活网卡
                nmcli con up "$Net_name" &>/dev/null && \
                action "配置成功"
                ;;
            auto)
                #使用nmcli命令配置静态模式
                nmcli con modify "$Net_name" ipv4.method "$Model" && \
                #激活网卡
                nmcli con up "$Net_name" &>/dev/null && \
                action "配置成功"
                ;;
            *)
                action "输入错误"  false
                echo "Usage:(please input manual|auto)"
                ;;
            esac
            else
                echo "请输入值"
fi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值