首页 > linux > 自动IP配置工具-Centos7
2018
04-23

自动IP配置工具-Centos7

#!/bin/bash
# 输出工具信息
echo “~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~”
echo “~~~ 欢迎使用自动IP配置工具,请谨慎操作 Author mmy ~~~”
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{print $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

最后编辑:
作者:小马哥
大数据技术学习及实践者~

留下一个回复

你的email不会被公开。