Bash tcpdump-忽略未知主机错误
我有一个从bash脚本运行的tcpdump命令。看起来像这样Bash tcpdump-忽略未知主机错误,bash,tcpdump,Bash,Tcpdump,我有一个从bash脚本运行的tcpdump命令。看起来像这样 tcpdump -nttttAr /path/to/file -F /my/filter/file 筛选器文件包含ip地址和主机名的组合。即 主机111.111.111.111或主机112.112.112.112和非主机(主机abc.com或主机def.com或主机zyx.com) 只要主机名都是有效的,它就工作得很好。我的问题是,有时这些主机名将无效,并且在遇到one时,tcpdump会吐出 tcpdump: Unknown Ho
tcpdump -nttttAr /path/to/file -F /my/filter/file
筛选器文件包含ip地址和主机名的组合。即
主机111.111.111.111或主机112.112.112.112和非主机(主机abc.com或主机def.com或主机zyx.com)
只要主机名都是有效的,它就工作得很好。我的问题是,有时这些主机名将无效,并且在遇到one时,tcpdump会吐出
tcpdump: Unknown Host
我原以为使用-n选项会跳过dns查找,但无论如何,我需要它忽略未知主机并继续过滤文件
有什么想法吗
提前谢谢。使用
-n
选项可以防止IP地址转换为名称,但不能反过来。如果提供主机名作为参数,则必须查找该主机名才能获得IP地址,因为数据包只包含数字地址,而不包含主机名。然而,应该有一种方法可以忽略无效的主机名,但我找不到。也许您可以使用dig
预处理筛选文件
dig +short non-existent-domain.com # returns null
dig +short google.com # returns multiple IP addresses
这可能更好,但它应该在筛选文件中显示无效的主机名:
grep -Po '(?<=host )[^ )]*' filterfile | grep -v '[0-9]$' | xargs -I % sh -c 'echo -n "% "; echo $(dig +short %)' | grep -v ' [0-9]'
grep-Po'(?我明白你的意思,在运行过滤器之前写出来检查域名。这里有一件有趣的事情-我让它在文件中循环-挖掘,并将好的文件写入新文件。然后使用它进行tcpdump。它仍然会不时弹出主机错误。@chaster:我会将其归因于网络或系统错误在互联网通信过程中有很多机会出现的ors。您只需在代码中重试即可。