我需要从SSH连接收集调试跟踪。我想从Linux终端运行SSH客户端,在屏幕会话内,能够与会话交互以启动跟踪,然后将所有输出记录到文件中,但我还想在前面添加时间戳每行包括毫秒信息。
我试图使用:
ssh ... | awk '{ print strftime("%a\ %b\ %d\ %H:%M:%S.%N\ %Y"), $0; fflush(); }' | tee logfile
它有效,但它有两个问题:没有毫秒,因为在strftime中不支持%N,并且在我发送之前从终端输入的命令不可见。
请考虑我可能无法安装linux软件包(我正在运行这个形式的Qnap NAS)而且我不是linux环境中的高手
非常感谢
答案 0 :(得分:1)
您可以date
使用while
循环代替awk
ssh ... | while read line; do echo "`date +'%a %b %d %H:%M:%S.%N %Y'` $line"; done | tee logfile
如果你不想在stdout上看到时间戳并且只记录它并且你的shell是bash,那么你可以使用命名管道:
ssh ... | tee >(while read line; do echo "`date +'%a %b %d %H:%M:%S.%N %Y'` $line"; done >logfile)
答案 1 :(得分:0)
你可以将日期/时间外包给shell,你可以从系统纳秒获得毫秒
... | awk 'BEGIN{cmd="date +%T.%3N"} { cmd | getline t; ...; close(cmd)}' |
您可以将其扩展为添加日期字段。不确定它对你有多好......