作为一个sys管理员,我试图在虚拟机上模拟一个用户来测试日志文件监控。
模拟用户将自动执行各种任务,这些任务应该显示在bash历史记录、"ls“、"cd”、“触摸”等。由于bash历史记录记录了bash历史记录,所以它们在bash历史记录中显示是非常重要的。
我考虑过直接写到bash历史,但更愿意更准确地模拟用户的行为。原因是bash历史记录不是唯一被监视的日志文件,如果同一事件的日志保持同步将更好。
安装了CentOS Linux7.3.1611Python2.7.5版本的详细信息
我已经尝试过使用pexpect.run( 'ls‘)或pexpect.spawn('ls'),’ls‘在bash历史记录中没有使用这两个命令。
发布于 2017-08-12 04:51:34
Bash日志记录只适用于交互式shell。这将打开带有Bash的交互式会话,并在其中运行ls,但如果定制.bashrc以更改PS1,则可能会失败。
child = pexpect.spawn('bash')
child.expect(r'\$')
child.sendline('ls')
child.expect(r'\$')
child.close()话虽如此,巴什历史很容易被忽略。它只在交互式会话结束时编写,并且可以在会话期间进行更改,因此
$ rm very_important_file
$ history -c或
$ kill -9 $$不会出现在.bash_history中。这甚至在限制巴什中也是可能的。
如果您需要更可靠的东西,我建议设置系统审计。
发布于 2017-08-16 16:16:26
简短的回答似乎是否定的,你不能用pexpect来做这件事。
Auditd是跟踪用户输入的一种可能的替代方法,但我还没有弄清楚如何让它记录'ls‘和'cd’这样的命令,因为它们不调用system ()命令。我发现的最好的工作是使用脚本命令,它打开另一个交互终端,其中输入的每个命令都会被记录下来。您可以使用脚本命令输出到的文件(默认情况下是类型记录)来记录所有用户命令。
https://stackoverflow.com/questions/45646104
复制相似问题