如何在记录 ssh 会话时注入时间戳?

问题描述 投票:0回答:2

我一直在利用此命令行将 shell 保护到主机中并记录会话终端并将其定向到关联的 .txt 文件。

ssh -t dobby1997@${IP} "script -t 2> timing.log" | tee "ssh_session.txt"

我试图将客户端的时间戳添加到 .txt 文件中,而不是利用主机的时间戳,但没有成功。

我尝试过使用awk:

ssh -t dobby1997@${IP} "script -t 2> timing.log" | awk -v epoch="$(date +%s)" '{print epoch, $0 }' | tee "ssh_session.txt"

为了在将客户端的时间戳定向到 .txt 文件之前添加客户端的时间戳。我的目标是能够在 ssh 中实时执行此操作,并且 .txt 文件中的每一行都标有当前客户端的纪元。我想运行它,使用主机密码登录,记录终端会话,退出,然后能够查看带有客户端时间戳的 .txt 文件。

但是,当我开始运行脚本时,我收到输入用户密码的提示,并尝试使用它登录主机,但提交密码后没有任何反应。

这是查看 .txt 文件时所需的输出:

1686322204 dobby@ubuntu:~/matrix_math_timer$ make
1686322205 gcc -c main.c
1686322206 gcc main.o matrix_impl.o -o matrix_math_timer
1686322207 dobby@ubuntu:~/matrix_math_timer$ ./cache_money 
1686322208 Time taken: 0.189859
1686322208 Time taken: 0.152965
1686322214 Time taken: 6.197541
1686322218 Time taken: 4.893529
1686322220 dobby@ubuntu:~/matrix_math_timer$ make clean
1686322220 rm *.o matrix_math_timer
1686322220 dobby@ubuntu:~/matrix_math_timer$

我将非常感谢任何提示和帮助。

bash awk ssh echo epoch
2个回答
2
投票

使用 GNU

awk
我建议用这个替换你的
awk
命令以获得 Unix 时间连续:

awk '{ print strftime("%s"), $0 }'

参见:时间函数


0
投票

如果其他方式不起作用,请使用 fifo :https://unix.stackexchange.com/questions/56189/appending-timestamp-stamp-along-with-log-file-lines

$ mkfifo foo.log.fifo

在 autossh.sh 脚本中我使用:

export AUTOSSH_LOGFILE="/root/autossh.log.fifo"
rm /root/autossh.log
(while true; do cat /root/autossh.log.fifo | ts '[%d-%m-%Y %H:%M:%S]' >> /root/autossh.log; done;) &
autossh ... -E /root/autossh.log.fifo
© www.soinside.com 2019 - 2024. All rights reserved.