BASH Shell会话在远程主机上的日志记录


8

将BASH Shell会话记录到主机上的文件的最佳方法是什么?

首选的输出格式将等效于PuTTY的“可打印输出”日志设置,由用户查看,包括输入和专有的ncurses控制字符数据。


好奇地知道您正在使用哪个shell。
pooter博士

Answers:


4

可能值得研究一下shell或系统审核程序,例如rootshsudosh


事实证明,rootsh离我想要的东西最近。
安迪

1
您还可以考虑acct / psacct(BSD记帐)或snoopy。它们不记录输出,但也不太详细。请参阅:cyberciti.biz/tips/…sourceforge.net/projects/snoopylogger
Mircea Vutcovici 2010年

rootsh应用程序现已弃用,sudosh似乎无法维护。我们实现了一个薄纸包装sudo,以便sudo用作会话日志记录的登录外壳。看到这里:github.com/cloudposse/sudosh
Erik Osterman

2

您可以启动gnu屏幕并使用日志功能。我不知道有什么可以为ncurses应用程序(例如top)提供非常好的日志。

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n"
in the window's default directory, where n is the number of the current
window. This filename can be changed with the `logfile' command. ...

logfile filename
logfile flush secs

Defines the name the log files will get. The default is "screenlog.%n".
The  second  form changes the number of seconds screen will wait before
flushing the logfile buffer to the file-system. The default value is 10
seconds.

屏幕的输出等效于脚本-ncurses处理似乎不受支持。
安迪2009年


1

script程序将获取您的Shell会话的完整日志。Dunno(如果它等同于任何腻子)。


谢谢,但是不适合我在顶部打开的外壳上花时间,该屏幕记录为:[andy @ 165〜] $ top ESC [HESC [2JESC(BESC [mtop-23:34:49 up 19 days,17 :42,1个用户,平均负载:0.11、0.07、0.01ESC(BESC [mESC [39; 49mESC [K
Andy

0

我不确定您要在这里实现什么目标。这是为了训练还是取证?如果您想要生成可读取的日志文件的文件,那么您可能不走运。如果您正在考虑能够回放会话,那么您需要的是ttyrec。您可以将其作为登录脚本的一部分运行,以捕获用户的会话,但是请确保使用“ trap”阻止用户退出ttyrec并返回到Shell。


个人审核和纯文本记录;不需要回放会话。
安迪

2
脚本是您想要的最接近的东西,尽管如上所述,它不能很好地处理ncurses。我们使用脚本来记录所有会话,只是尝试查看ncurses将会造成的混乱。
goo

谢谢Geoff,看来我那时可能会被脚本困扰。
安迪

0

通常在您的家中,所有输入的命令都将写入.bash_history文件。您可以设置通过HISTFILESIZE设置存储的行数。

但是,没有时间戳和输出。

如果确实需要这样做,我会在bash周围做一个包装,将stdin和stdout复制到文件中并进行处理。


0

您可以尝试使用http://xgu.ru/wiki/LiLaLo。 它是俄罗斯制造的,因此文档也是俄文的,但是Google翻译会为您提供帮助。这是输出的示例:(源:xgu.ru替代文字


翻译有点古怪。这会处理类似交互式顶级流程的问题吗?
pooter博士

至于图片,它不处理vi,所以我认为没有顶级。但是日志记录很有吸引力。
TiFFolk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.