我需要从 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环境的高手
非常感谢
最佳答案
您可以将 date
与 while
循环一起使用,而不是 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/