环境:centos7
简介:ip地址固化,自动设置网卡固定ip地址
使用虚拟机时经常遇到虚拟机ip变化导致环境无法访问的问题,自己家用的服务器也会有这个问题。
下面这个脚本可以将系统自动获取的ip地址、网关等信息设置为固定ip,避免系统重启之后ip漂移导致无法访问。同时也避免网关信息设置错误导致网络无法访问。
将下面的代码保存为 setip.sh脚本,执行脚本setip.sh
echo 'please input the net device name';
read devName;
ipset=`ifconfig $devName|grep inet|awk 'BEGIN {FS=" "} {if($1=="inet") printf $2 "\n" $4 "\n" $6 "\n"}'`
ipset=($ipset)
gate=`route -n|grep $devName | awk 'BEGIN {FS=" "} {if($2 != "0.0.0.0") printf $2 "\n"}'`
echo IPADDR=${ipset[0]}
echo NETMASK=${ipset[1]}
echo GATEWAY=$gate
if test /etc/sysconfig/network-scripts/ifcfg-$devName;
then
cp /etc/sysconfig/network-scripts/ifcfg-$devName /etc/sysconfig/network-scripts/ifcfg-$devName-bk
sed -i -e 's/^BOOTPROTO=\"dhcp\"/BOOTPROTO=\"static\"/' /etc/sysconfig/network-scripts/ifcfg-$devName
sed -i '/IPADDR=/ d' /etc/sysconfig/network-scripts/ifcfg-$devName
sed -i '/NETMASK=/ d' /etc/sysconfig/network-scripts/ifcfg-$devName
sed -i '/GATEWAY=/ d' /etc/sysconfig/network-scripts/ifcfg-$devName
echo IPADDR=${ipset[0]} >> /etc/sysconfig/network-scripts/ifcfg-$devName
echo NETMASK=${ipset[1]} >> /etc/sysconfig/network-scripts/ifcfg-$devName
echo GATEWAY=$gate >> /etc/sysconfig/network-scripts/ifcfg-$devName
fi
将上面的脚本保存为setip.sh,利用ifconfig获取网络设备,例如 eth0,执行下面的命令运行脚本即可将该设备eth0的ip地址设置为dhcp模式下获取到的ip、gateway和netmask,避免手动设置错误,减少工作量
sh ./setip.sh eth0
执行下面的命令重启网卡生效,不重启也没问题,下次系统重启的时候会自动执行固定ip的:
systemctl restart network