如何禁用命令“ ping”发送的错误消息?

时间:2019-08-06 07:40:12

标签: bash shell

我使用bash脚本编写了一个简单的ping清除程序。我也使用grep命令过滤掉想要的结果。问题是,无论我尝试了什么grep命令,控制台均会继续打印出错误消息:“ ping:recvmsg:无路由到主机”。我试图将输出写入文件,并且文件内没有错误消息,但它们仍出现在控制台上。我想知道是什么原因导致控制台打印出这样的错误消息以及如何禁用它,谢谢。

这是我写的脚本。

#!/bin/bash
for ip in $(seq 1 254); do
#ping -c 1 10.11.1.$ip | grep -v "recvmsg" | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
ping -c 1 10.11.1.$ip | grep -v "recvmsg" |grep -v "ping" |  grep "bytes from"  | cut -d " " -f 4 | cut -d ":" -f 1| sort -d >> report &
done
wait

这是错误消息

ping: recvmsg: No route to host

1 个答案:

答案 0 :(得分:1)

您可以将重定向器用于stderr(标准错误),只需将其放在命令2> error.log的末尾即可

#!/bin/bash
for ip in $(seq 1 254); do
#ping -c 1 10.11.1.$ip | grep -v "recvmsg" | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
ping -c 1 10.11.1.$ip 2> error.log | grep -v "recvmsg" |grep -v "ping" |  grep "bytes from"  | cut -d " " -f 4 | cut -d ":" -f 1| sort -d >> report   &
done
wait