gpt4 book ai didi

linux - 记录终端上的操作

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:05 24 4
gpt4 key购买 nike

我想记录用户在终端上执行的操作。这包括用户通过 ssh 连接到远程主机时可能执行的操作。这意味着如果用户运行

ssh user@192.168.1.1
user@192.168.1.1's password:

ls -ltr
f1 f2 f3

#record all the above

在通过 ssh 的远程计算机上,它应该记录命令和输出。我已经为它编写了一个 bash 脚本并尝试了以下操作

while IFS="" read -e -d $'\n' -p "$USER@$HOSTNAME:$PWD$ " cmd; do 

这捕获了 cmd 的输入,但如何触发命令并记录输出仍然是一个谜。

如果有更好的方法,我愿意接受任何其他语言。

如果有一种方法可以选择记录的内容,那就太好了。例如:

$ls
file1 file2 file3 folder1

#record

$cat file1
Lorem ipsum dolor sit amet, consectetur adipiscing elit

#do not record

最佳答案

首先,我假设“用户在终端上执行的操作”指的是键盘输入。然后,这将与您想要捕获的输出相匹配。这不包括例如当用户运行rm时删除文件!

现在,您的问题中存在一个误解。终端仅提供输入(来自键盘)和输出(到显示器)。然后,输入(除了它本身解释的内容之外)被转发到程序,通常是像 shell 这样的程序。 zshfish 而该程序的输出将转发到显示器。这是通过三个标准流 stdinstdoutstderr 实现的。您基本上需要的是一个位于终端和 shell 之间的程序。该程序在终端和 shell 之间编码数据,同时将该数据(或至少是输出)记录到文件中。这是例如script 的作用。

请注意,您对记录 SSH session 的要求也已满足。在正常的 SSH session 中,上述具有两个元素(终端、shell)的链通过 SSH 客户端进行扩展,并通过相应的 SSH 服务器进程和另一个程序(通常是另一个 shell)进行远程扩展。当您在远程计算机上执行 echo foo 时,那里的 shell 会将其输出到 SSH 服务器进程,然后该进程将其传递到 SSH 客户端、本地 shell,最后传递到终端进行显示。终端的输入采用相反的路径。

关于linux - 记录终端上的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com