例46
写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务:
1)使用格式:getinterface.sh [-i interface | -I ip]
2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项时,显示其指定ip所属的网卡。
例:
sh getinterface.sh -i eth0 或者
sh getinterface.sh -I 192.168.0.1
3)当用户使用除[-i | -I]选项时,显示[-i interface | -I ip]此信息。
4)当用户指定信息不符合时,显示错误。(比如指定的eth0没有,而是eth1时)
#!/bin/bash
ip add |awk -F ': ’ ‘$1 ~ “1” {print $2}’ > /tmp/ifs.txt
get_ip()
{
ip add show dev $1 |grep inet |awk ‘{print $2}’ |awk -F ‘/’ ‘{print $1}’
}
for eth in cat /tmp/ifs.txt
do
myip=get_ip $eth
if [ -z “$myip” ]
then
echo $eth
else
echo $eth $myip
fi
done > /tmp/if_ip.txt
if [ $# -ne 2 ]
then
echo “请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip”
exit
fi
if [ $1 == “-i” ]
then
if awk ‘{print $1}’ /tmp/if_ip.txt |grep -qw $2
then
eth=
2
i
p
1
=
‘
a
w
k
−
v
a
e
t
h
=
2 ip1=`awk -v aeth=
2ip1=‘awk−vaeth=eth '
1
=
=
a
e
t
h
′
/
t
m
p
/
i
f
i
p
.
t
x
t
∣
s
e
d
"
s
/
1==aeth' /tmp/if_ip.txt|sed "s/
1==aeth′/tmp/ifip.txt∣sed"s/eth //“echo "网卡$2的ip是 $ip1" else echo "你指定的网卡不对,系统中的网卡有:
cat /tmp/ifs.txt|xargs" exit fi elif [ $1 == "-I" ] then if grep -qw " $2 " /tmp/if_ip.txt then eth=
grep -w " $2 " /tmp/if_ip.txt|awk '{print $1}'echo "IP $2对应的网卡是$eth" else echo "你指定的ip不对,系统中的IP有:
ip add |grep inet |awk ‘{print $2}’|awk -F ‘/’ ‘{print $1}’|xargs`”
exit
fi
else
echo “请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip”
fi
1-9 ↩︎