运行SSH会话并从客户端登录到文件标准添加时间戳

时间:2017-03-07 14:03:33

标签: linux logging awk ssh timestamp

我需要从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环境中的高手

非常感谢

2 个答案:

答案 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)}' | 

您可以将其扩展为添加日期字段。不确定它对你有多好......