思路:先将网卡和对应IP地址写入到文本,再根据输入的参数进行case判断
#!/bin/bash
eths=/tmp/eths.txt #定义网卡文本路径
eth_if=/tmp/eth_if.txt#定义网卡和对应IP地址的文本路径
useage() {
echo "please input: $0 -i network card or -I ip address."
}#定义使用函数
wrong_netcard() {
if ! awk -F ':' '{print $1}' $eth_if|grep -qw "^$1$";then
#第一个$1为awk参数,第二个$1为外部传参参数$2赋值,"^ $"以参数开头结束
echo "please input right network information: `awk -F ':' '{print $1}' $eth_if|xargs`"
#|xargs网卡信息不换行输出
exit#退出脚本
fi
}#定义错误网卡函数
wrong_ip() {
if ! awk -F ':' '{print $2}' $eth_if|grep -qw "^$1$";then
echo -e "please input correct ip address: \n`awk -F ':' '{print $2}' $eth_if|grep -v '^$'`"
#echo -e "\n"换行,grep -v '^$'将空行过滤
exit#退出脚本
fi
}#定义错误ip地址函数
ip addr |awk -F ': ' '$1 ~ "^[0-9]" {print $2}' > $eths
for i in `cat $eths`
do
ip_1=`ip addr |grep -A2 ": $i:"| grep -w inet|awk '{print $2}'|cut -d '/' -f1`
echo "$i:$ip_1" >> $eth_if
done #将系统网卡对应信息写入到$eth_if文本
[ -f $eths ] && rm $eths #删除文本
if [ $# -ne 2 ];then #判断传递参数为2
useage
exit#退出脚本
fi
case $1 in
-i)
wrong_netcard $2
eth_ip=`grep -w $2 $eth_if |awk -F ':' '{print $2}'`
if [ -z $eth_ip ];then#判断网卡ip为空
echo "$2 ip address is none!"
else
echo "$2 ip address is $eth_ip"
fi
;;
-I)
wrong_ip $2
ip_eth=`grep -w $2 $eth_if |awk -F ':' '{print $1}'`
echo "$2 network card information is $ip_eth"
;;
*)
useage
;;
esac
[ -f $eth_if ] && rm $eth_if#删除文本
使用网卡:sh getinterface.sh -i br0
输出信息:br0 ip address is 192.168.32.139
使用IP:sh getinterface.sh -I 127.0.0.1
输出信息:127.0.0.1 network card information is lo
46.输入网卡显示ipaddr,输入ip显示网卡脚本
原创Margotchen 博主文章分类:shell应用100 ©著作权
©著作权归作者所有:来自51CTO博客作者Margotchen的原创作品,谢绝转载,否则将追究法律责任
上一篇:43.监控用户登录脚本
下一篇:48.检测服务状态脚本
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
显示网卡当前速度的脚本
显示网卡,速度,脚本
职场 速度 脚本 休闲 显示网卡 -
密码显示输入
在 HTML 中,有一个非常明确的输入类型来处理密码:<input type="password">如果你使
javascript 开发语言 ecmascript css 省略号