Linux一键设置ip脚本代码 (ip段192.168.1.nnn)

本脚本需要在linux连接工具中完成   

例如  xshell等工具

vi ip.sh    

将下面代码复制进去即可

#!/bin/bash
# 输出工具信息
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "~~~      欢迎使用自动IP配置工具,请谨慎操作 Author   杨少 ~~~"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
# 先检查ifconfig命令是否存在
type ifconfig &> /dev/null
if [[ $? != 0 ]]; then
    echo "检测到当前操作系统没有安装ifconfg命令,本程序将自动安装,若不同意,请输入q或Q退出当前程序
。若同意则输入其他任意内容"
    read quitornot
    if [[ $quitornot = "q" ]] || [[ $quitornot = "Q" ]]; then
        echo "欢迎您的使用,再见"
        exit
    else
        echo "##################正在开启安装过程##################"
        yum -y install net-tools
        echo "##################  命令安装完成  ##################"
    fi
fi
# 输出网卡列表
echo "本机网卡列表如下:"
ifconfig | grep '.*: flag.*'|awk -F: '{print$1}'
# 提示输入网卡编号
echo "请输入要配置的网卡的编号(默认配置第1个网卡,使用默认值请按回车键):"
# 变量接收网卡编号
read NETWORKCARDNUMBER
if [[ $NETWORKCARDNUMBER = "" ]]; then
    NETWORKCARDNUMBER=1
else
    printf "%d" $NETWORKCARDNUMBER &> /dev/null
    while [[ $? -ne 0 ]]; do
        echo "输入的网卡编号错误,请输入正确的数字!"
        read NETWORKCARDNUMBER
        if [[ $NETWORKCARDNUMBER = "" ]]; then
            NETWORKCARDNUMBER=1
            break
        else
            printf "%d" $NETWORKCARDNUMBER &> /dev/null
        fi
    done
fi
echo "将对第$NETWORKCARDNUMBER块网卡进行配置"
if [[ $NETWORKCARDNUMBER -eq 0 ]]; then
    let NETWORKCARDNUMBER++
fi
# 获取对应网卡的网卡名
NETWORKCARDNAMEShort=`ifconfig | grep '.*: flag.*'|awk -v line="$NETWORKCARDNUMBER" -v FS=: 'NR==line{pr
int $1}'` 
# 拼接网卡所在路径,获取网卡全名
NETWORKCARDNAME="/etc/sysconfig/network-scripts/ifcfg-$NETWORKCARDNAMEShort"
# 输出网卡绝对路径
echo $NETWORKCARDNAME

#提示输入网段
echo "请输入指定网段(默认为1,使用默认值请按回车键)"
read NETWORKPART
if [[ $NETWORKPART = "" ]]; then
    NETWORKPART=1
else
    printf "%d" $NETWORKPART &> /dev/null
    until [[ $? -eq 0 ]]; do
        echo "输入的网段错误,请输入正确的数字!"
        read NETWORKPART
        if [[ $NETWORKPART = "" ]]; then
            NETWORKPART=1
            break
        else
            printf "%d" $NETWORKPART &> /dev/null
        fi
    done
fi

echo "请输IP地址的第四段(需>=0且<=254)"
read IPPART4
printf "%d" $IPPART4 &> /dev/null
until [[ $? -eq 0 ]] && [[ $IPPART4 -ge 0 ]] && [[ $IPPART4 -le 254 ]]; do
    echo "输入的IP地址的第四段错误,请输入正确的数字(需>=0且<=254)!"
    read IPPART4
    printf "%d" $IPPART4 &> /dev/null
done

# 拼接IP地址 
IPADDR="192.168.$NETWORKPART.$IPPART4"
# 拼接GATEWAY
GATEWAY="192.168.$NETWORKPART.1"
# 设定NETMASK
echo "请输入自定义NETMASK(默认使用255.255.255.0,使用默认值请按回车键):"
read NETMASK
if [[ $NETMASK = "" ]]; then
    NETMASK="255.255.255.0"
fi
# 拼接DNS1
DNS1="192.168.$NETWORKPART.1"

echo "将修改第$NETWORKCARDNUMBER块网卡,修改的详细信息如下:"
echo "IPADDR=$IPADDR"
echo "NETMASK=$NETMASK"
echo "GATEWAY=$GATEWAY"
echo "DNS1=$DNS1"
echo "并同时将IP获取方式设置为static,网卡随系统启动"
echo -e "\n是否确认修改,请谨慎操作,此操作不可逆(y or Y)" # echo命令中要想使用\n等类似符号时需要加上-
e参数 
read input
if [[ $input = "y" || $input = "Y" ]]; then
    # 修改IP获取方式为静态获取
    sed -i "/BOOTPROTO=.*/c BOOTPROTO=static" $NETWORKCARDNAME
    # 修改网卡随系统系统
    sed -i "/ONBOOT=.*/c ONBOOT=yes" $NETWORKCARDNAME

    # 将IP等相关内容添加到网卡文件的尾部
    #sed要想使用变量,只需要将单引号换成双引号即可,注意在双引号中使用$(即最后一行)时需要加转译符\
    sed -i "\$a "IPADDR=$IPADDR"" $NETWORKCARDNAME 
    sed -i "\$a "NETMASK=$NETMASK"" $NETWORKCARDNAME 
    sed -i "\$a "GATEWAY=$GATEWAY"" $NETWORKCARDNAME 
    sed -i "\$a "DNS1=$DNS1"" $NETWORKCARDNAME 
else
    echo "输入错误,结束"
fi

echo "关闭网卡并重启,有可能会断开连接"
ifdown $NETWORKCARDNAME
ifup $NETWORKCARDNAME

#提示:上述代码已经结束  下面提示几点  

#提示  :在网卡配置的时候可能出现ip段可能不同  

#通过vi编辑命令进行修改  :vi /etc/sysconfig/network-scripts/ifcfg-ens33(这是你的网卡名称,根据自己的来)

修改成自己的ip地址段即可

网卡名称可以修改

切记在修改过网卡后一定重启网卡  新建连接即可

命令  service  network restart  

猜你喜欢

转载自blog.csdn.net/yanghenpi/article/details/83146303