linux - 运行 SSH session 并从客户端记录到文件 stdout,添加时间戳

标签 linux logging awk ssh timestamp

我需要从 SSH 连接收集调试跟踪。我想从 Linux 终端在屏幕 session 内运行 SSH 客户端,能够与 session 交互以启动跟踪,然后将所有输出记录到文件中,但我也想在前面添加一个时间戳每行包括毫秒信息。

我尝试使用:

ssh ... | awk '{ print strftime("%a\%b\%d\%H:%M:%S.%N\%Y"), $0; fflush(); }' | tee日志文件

它可以工作,但有两个问题:没有毫秒,因为 strftime 不支持 %N,并且从终端输入的命令在我发送之前不可见。

请考虑到我可能无法安装linux软件包(我在Qnap NAS上运行这个)并且我不是linux环境的高手

非常感谢

最佳答案

您可以将 datewhile 循环一起使用,而不是 awk

ssh ... | while read line; do echo "`date +'%a %b %d %H:%M:%S.%N %Y'` $line"; done | tee logfile

如果您不想在标准输出上看到时间戳,而只想记录它并且您的 shell 是 bash,那么您可以使用命名管道:

ssh ... | tee >(while read line; do echo "`date +'%a %b %d %H:%M:%S.%N %Y'` $line"; done >logfile)

关于linux - 运行 SSH session 并从客户端记录到文件 stdout,添加时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650349/

相关文章:

c - 来自 3g 调制解调器的 read() 和 select()

android - 如何检查我的应用程序是否连接到 Facebook

bash - Sed/Awk - 在模式 x 和 y 之间拉线

linux - 用户空间程序如何与 Linux 上的 USB 802.11 Wi-Fi 驱动程序交互?

C- Linux- 创建线程并传入缓冲区

Javafx 无法在 Debian8 Arm 设备 NanoPC T3 上运行

Python 记录器在 atexit 处理程序之前被清理

c++ - 在没有 C 预处理器的情况下记录表达式的文本及其结果

awk - 如何在awk中用4个零填充十六进制数?

Linux 逐行读取文件并报告