如何将 mtr 命令以人类可读的形式输出到标准输出?

如何将 mtr 命令以人类可读的形式输出到标准输出?

当我运行时sudo mtr 4.2.2.1,它在终端中循环运行。

我想保留与以下相同的格式:

Host                                                   
1. 192.168.15.1                                        
2. ???
3. 10.254.254.x                                      
4. 10.254.254.x                                     
5. core1.lon2.he.net                           
6. 10gigabitethernet2-1.core1.lon2.he.net
7. a.resolvers.level3.net

但打印一次到标准输出。

在手册中,我只能看到以 XML、JSON、CSV 或 RAW 格式打印的选项,但看不到上面打印一次的人类可读格式。基本上我对使用命令时的类似格式感兴趣traceroute,但对于mtr.是否可以?

我尝试运行 as sudo mtr -c1 4.2.2.1 | head -n20,但它破坏了终端,所以我reset每次使用后都必须运行它。有什么解决办法吗?

答案1

如果你想处理mtr的输出,或者在mtr退出后保持它的显示,你需要在报告模式,或者更好的宽报告模式下运行它:

mtr -r -c1 4.2.2.1

或者

mtr -w -c1 4.2.2.1

(不同之处在于,在宽报告模式下,它不会截断主机名)。

mtr -w -c1 4.2.2.1 | awk 'NR>1 {print $1, $2}'

会给出一些接近你所追求的东西。

答案2

-r这可以通过报告模式来完成。

sudo mtr -c1 -r 4.2.2.1 | head -n20

或者重定向到一个文件...

sudo mtr -c1 -r 4.2.2.1 | head -n20 > out

还,iTerm2似乎不受屏幕绘制问题的影响。

相关内容