如果问题不合适,我会事先道歉。我正在编写一个脚本,该脚本对 IP 地址的前三个八位字节进行 greps 并将其发送到一个变量。接下来我想使用该变量并在 for 循环中设置一个范围,但它不起作用。
这是我的代码;
device_ip=$(ip addr show eth1 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.')
for i in {191..200};
do
printf device_ip | ping -c 1 "$device_ip""$i"
done
除了将两个变量组合到 ping 之外,它会做所有事情。输出;
sh myscript.sh
ping: unknown host x.x.x.
x.x.x.{191..200}
谁能指出我正确的方向?我哪里错了?
提前谢谢了,
重击:
#!/bin/bash
device_ip="$(ip -o -4 a sh eth1|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.'|head -1)" # make sure you get only the first IP, in case eth1 returns more than 1
for i in {191..200}
do
echo pinging IP: ${device_ip}${i}
ping -c1 ${device_ip}${i}
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句