从 Windows cmd 向 telnet 会话日志的每一行添加时间戳

Posted

技术标签:

【中文标题】从 Windows cmd 向 telnet 会话日志的每一行添加时间戳【英文标题】:adding timestamp to each line of a telnet session log from Windows cmd 【发布时间】:2021-10-24 09:48:12 【问题描述】:

我需要知道设备何时显示某些消息。为此,我需要将所有输出与时间戳一起存储在 log.txt 文件中。

我从我的 Windows PC 的 cmd 使用 telnet 会话,我想知道是否可以在显示的每一行的时间戳前面存储会话的输出。

基本上,我打开 cmd 并输入:

telnet 192.168.1.1

然后我输入一个命令来显示设备的日志,它开始随机显示状态消息。像这样的:

[OL 225451]lib_thread_show:304 [0]name=decode, pid=0x6014f6, st=1
[OL 225451]lib_thread_show:304 [1]name=handler, pid=0x601df6, st=1
[OL 225451]lib_thread_show:304 [2]name=notify_handler, pid=0x6014b9f6, st=1
[OL 225451]lib_thread_show:304 [3]name=event_handler, pid=0x601f6, st=1

[OL 225451]lib_thread_show:304 [5]name=msghandler, pid=0x60f41bf6, st=1
[OL 225451]lib_thread_show:304 [6]name=service, pid=0x60f417f6, st=1
[OL 225451]lib_thread_show:304 [7]name=service, pid=0x60413f6, st=1
[OL 225451]lib_thread_show:304 [8]name=, pid=0x00000000, st=0
 

我需要知道这些时间并以某种方式将它们记录在 log.txt 文件中,所以我想存储如下内容:

2021/08/13 13:35:03[OL 225451]lib_thread_show:304 [0]name=decode, pid=0x6014f6, st=1
2021/08/13 13:35:04[OL 225451]lib_thread_show:304 [1]name=handler, pid=0x601df6, st=1
2021/08/13 13:35:06[OL 225451]lib_thread_show:304 [2]name=notify_handler, pid=0x6014b9f6, st=1
2021/08/13 13:35:08[OL 225451]lib_thread_show:304 [3]name=event_handler, pid=0x601f6, st=1

2021/08/13 13:36:03[OL 225451]lib_thread_show:304 [5]name=msghandler, pid=0x60f41bf6, st=1
2021/08/13 13:36:08[OL 225451]lib_thread_show:304 [6]name=service, pid=0x60f417f6, st=1
2021/08/13 13:36:09[OL 225451]lib_thread_show:304 [7]name=service, pid=0x60413f6, st=1
2021/08/13 13:36:13[OL 225451]lib_thread_show:304 [8]name=, pid=0x00000000, st=0

我可以添加任何 cmd 命令吗?我也在探索Teraterm cmd 命令,但不知道如何使用它们。

【问题讨论】:

【参考方案1】:

您可以将输出通过管道传输到批处理文件,该文件从管道中读取并在每行前面加上时间戳。

echo my telnet input | telnet 192.168.1.1 | addTimestamp.bat 

对于异步管道读取批处理,请查看 SO: Read stdin line by line

你只需要修改

echo( READ[!lineCnt!]: !line!

echo(!time! [!lineCnt!]: !line!

【讨论】:

谢谢!所以我想我需要将 telnet 命令放在“ping localhost -n 2 > nul”所在的位置,对吗?这将是该答案中的第二个脚本 @Natiya 不,不要修改批次,ping localhost -n 2 只是等待一秒钟的一种方式。查看我的编辑,如何在 telnet 命令中使用管道 谢谢!但是打开 telnet 会话后如何输入命令?因为,从 cmd,我打开到设备的 telnet 会话,然后我输入命令来显示我想要存储的带有时间戳的日志。是在你编辑的那一行之后的 cmd 中吗? @Natiya 如果您在命令行中使用telnet 192.168.1.1 | addTimestamp.bat,只需键入命令,此时您可能看不到 telnet 输出,但应该可以正常工作

以上是关于从 Windows cmd 向 telnet 会话日志的每一行添加时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 SSH 连接向 Telnet 发送命令

powercmd 执行telnet还是会调用windows自己的CMD进行TELNET,请问怎么改可以直接用powercmd telnet啊?

Windows WMIC命令使用详解(附实例)

从 shell 脚本生成交互式 telnet 会话

为 Telnet 会话创建脚本?

如何从 Runtime.exec 创建的 cmd 会话写入 Unix 终端?