1. 运行脚本可以显示出本机的ip地址
思路:
查询ip地址的命令有ip a, hostname -i, cat /etc/NetworkManager/system-connections/INTERFACE, nmcli connection show INTERFACE 等等。个人认为除ip地址外,DNS和网关地址也较为重要,所以计划制作脚本展示IP地址、DNS和网关地址,同时制作出该脚本的软连接文件showint,存入/usr/bin中,制作成命令方便查询。
nmcli connection show INTERFACE 查询出来的结果比较全,所以决定选择该命令进行筛选。
show后面需要使用接口id来查询,所以需要提取接口id作为变量写入命令,但考虑每台服务器设置的接口id不一定和接口名称一致,所以计划通过nmcli connection show获取第一列的接口id。
获取第一列的接口id时发现可能会出现一些无用信息行干扰获取结果,例如bond-slave-eth0从接口,所以计划利用行尾末列的接口名称进行筛选。
而获取接口名称的方法是利用ip a进行提取,查看所有信息时发现,同时有inet和brd信息的行尾存在有效的接口名称(不包括loop接口等)。
根据以上思路分析,生成以下bash脚步:
#!/bin/bash
IPADDR(){
ip a | sed -n '/brd/p' | sed -nr '/inet/s#.*inet (.*) brd.*#\1#p'
}
ETHNAME(){
ip a | sed -n '/brd/p' | sed -n '/inet/p' | awk '{print $NF}'
}
GETID(){
NAMELIST=$(ETHNAME)
for NAME in $NAMELIST; do
nmcli connection show | awk -v var=$NAME '$NF==var{print $1}';
done
}
FIN(){
IDLIST=$(GETID)
for i in $IDLIST; do
nmcli connection show $i | grep -e interface-name -e ipv4.gateway -e ipv4.addresses -e ipv4.dns:
echo -e \\n;
done
}
FIN
标签:nmcli,show,ip,Week2.1,接口,N77007,connection,BJ,id From: https://www.cnblogs.com/n77007-bj-duyifan/p/17463030.html