我需要排除 telnet 会话故障,并将结果保存发送给其他人。当我使用重定向时,我保存了会话的内容,但我无法在控制台上看到它。
如何管道化当前终端/程序并仍在当前控制台上显示它。
当我使用下面的命令时,我可以保存程序的输出,但我无法在控制台上看到它。
telnet ADDRESS PORT >> myoutputfile
我可以使用 telnet 输出选项,我正在寻找一种独立于命令的方法来执行此操作。
该问题特定于 telnet 会话,但适用于任何其他命令,包括那些没有“保存输出到文件选项”的命令。
答案1
最简单的解决方案是使用tee
:-
telnet ADDRESS PORT | tee -a myoutputfile
这会将输出复制到标准输出和指定的文件名,并且-a
附加选项,就像>>
重定向一样。
答案2
有一个技巧是使用错误输出作为第二个缓冲区来输出到两个设备。
你的命令是:
telnet ADDRESS PORT >&2 2>>myoutputfile
这会将输出附加到 myoutputfile,并将输出的任何内容写入控制台。
>&2
:将输出从流 1(控制台)复制到流 2(错误)
2>>
:这确保来自流 2 的所有内容都被发送到文件。
如果您不想冒险将错误日志添加到文件中,请将两行中的 2 更改为 3。(>&3 3>>file
)
编辑:我刚刚注意到了 linux 标签。这是为 Windows 编写的,但它可能仍然有效。