Linux 获取网卡IP信息

获取本地IP

172.17 是docker的虚拟IP,因此将它排除掉。

localip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v 172.17|grep -v inet6|awk  {print $2} |tr -d "addr:"`
echo $localip

获取本地IP的子网掩码

与获取本地IP的原理差不多。

localmask=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v 172.17|grep -v inet6|awk  {print $4} |tr -d "addr:"`
echo $localmask

获取本地IP的网关服务器IP

关键点是UG。

localgateway=`route -n|grep 0.0.0.0|grep UG|awk  {print $2} `
echo $localgateway

获取本地DNS

如果有多个结果会造成awk的结果也是多个,而tail表明从第几行开始,head表明输出前几行,因此两个命令结合,就可以实现,输出第X行到Y行的结果。
DNS在DHCP时,默认会有两条记录,因此可以获取两条DNS服务器IP。

localdns1=`grep nameserver /etc/resolv.conf|awk   {print $2}  |tail -n +1|head -n 1`
localdns2=`grep nameserver /etc/resolv.conf|awk   {print $2}  |tail -n +2|head -n 1`

echo "dns1:$localdns1"
echo "dns2:$localdns2"

一键将本地DHCP信息转换为静态IP配置

变量取值是来源于前面的命令。

   sed -i "s/dhcp/static/g" /etc/sysconfig/network-scripts/ifcfg-eth0 
&& echo "" >> /etc/sysconfig/network-scripts/ifcfg-eth0 
&& echo "IPADDR=$localip" >> /etc/sysconfig/network-scripts/ifcfg-eth0 
&& echo "NETMASK=$localmask" >> /etc/sysconfig/network-scripts/ifcfg-eth0 
&& echo "GATEWAY=${localgateway}" >> /etc/sysconfig/network-scripts/ifcfg-eth0 
&& echo "DNS1=$localip" >> /etc/sysconfig/network-scripts/ifcfg-eth0

使网卡配置信息生效

在rocky linux里面没有生效,最直接的办法就是重启操作系统。

systemctl restart network>/dev/null
nmcli connection reload>/dev/null

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容