我需要一些有关如何过滤跟踪路由返回的数据的帮助。
简介 我正在运行一个 bash 脚本来检查此命令返回的 IP:
IP=`traceroute -m 2 www.test.com | awk -vOFS='\t' '{if (NR==3){print $2}}'`
echo "$IP: `date`"
基于“$IP”的值,我执行“expect”命令来修改开关内的参数。
bash 脚本是通过根 crontab 安排的。
问题描述 执行该bash脚本的crontab正在生成这样的日志
192.168.3.25: vie dic 14 14:10:23 CET 2012
192.168.3.25: vie dic 14 14:20:12 CET 2012
192.168.3.25: vie dic 14 14:30:11 CET 2012
192.168.3.25: vie dic 14 14:40:11 CET 2012
192.168.3.25: vie dic 14 14:50:11 CET 2012
expect /root/Scripts/delete.exp
192.168.3.111: vie dic 14 15:00:11 CET 2012
*: vie dic 14 15:10:11 CET 2012
*: vie dic 14 15:20:16 CET 2012
如您所见,在执行 expect 脚本后出现问题,并且 traceroute 行开始返回“*”而不是正确的 IP(192.168.3.25)。我认为由于某种原因,在对交换机进行修改后,大约 20 分钟后,traceroute 少返回了一行(第一行显示交换机的 IP 丢失了)。
我已经以多种方式测试了traceroute返回的值,我认为我应该避免使用awk来过滤从traceroute返回的值。那是因为只要我知道,通过使用 awk 我就可以使用“NR”来过滤行。所以,我不知道如何过滤这些值以搜索特定的值(即一个特定的 IP)。
谢谢您的帮助。