背景
Linux调试设备过程中需要对IP配置检查,如果配置好了IP则使用默认IP,如果IP没有配置,则配置对应的IP地址DCHP自动分配IP,如果动态分配不到IP,则配置为静态IP
这样的配置IP的策略,保证了IP地址不会掉,如果动态分配不到IP,网络没有IP,会导致设备很麻烦,还要通过其他网口,或者串口登录设备进行修改。这样大大增加了系统不稳定性。
实现
如下图所示:
代码解读:
检查eth0如果IP没有没配置,则启动DHCP自动获取IP
检查eth0,如果IP没有自动分配到IP,则默认eth0配置静态IP 192.168.111.2
这样就保证了eth0肯定有IP地址
不会出现IP丢失,导致系统无法登录
代码截图如下
代码块如下图所示:
#!/bin/sh
#network config
net='eth0'
ip=`ifconfig $net|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo $ip
if [$ip -eq ""]
then
echo "ip没有配置1"
udhcpc -i $net -b &
else
echo "ip已经配置1"
fi
sleep 5
ip=`ifconfig $net|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo $ip
if [$ip -eq ""]
then
echo "ip没有配置2"
ifconfig $net down
sleep 1
ifconfig $net 192.168.111.2 netmask 255.255.255.0
route add default gw 192.168.111.1
else
echo "ip已经配置2"
fi
指令解读
因需要将linx下获取某个网中的MAC地址,可以使用如下命令获取:
ifconfig|grep ens33|awk '{print $5}'
ifconfig:
输出linux下所有网口的信息(包括IP地址,掩码,MAC地址等)
grep ens33:
linux下的一种过滤条件,这个是将ens33所在行一行信息全部显示出来
awk '{print $5}' : 是行处理器命令,后面的print是打印,$5是指第5个字符(空格是不计算在内的)
所以这一完整命令的解释就是:
将ens33所在行的信息的第5个字符串显示出来,也即是ens33网口的MAC地址
virtual-machine:~/$ ifconfig|grep ens33|awk '{print $5}'
00:0c:29:37:ff:de