作为系统管理员,我正在尝试在虚拟机上模拟用户以测试日志文件监控。
模拟用户将自动执行应显示在 bash 历史记录中的各种任务,“ls”、“cd”、“touch”等。它们显示在 bash 历史记录中很重要,因为 bash 历史记录已记录.
我考虑过直接写入 bash 历史记录,但更愿意更准确地模拟用户行为。原因是 bash 历史记录不是唯一被监视的日志文件,如果同一事件的日志保持同步会更好。
详情 我正在使用 CentOS Linux 7.3.1611 版 Python 2.7.5 已安装
我已经尝试使用 pexpect.run('ls') 或 pexpect.spawn('ls'),'ls' 没有出现在任何命令的 bash 历史记录中。
最佳答案
Bash 日志记录仅适用于交互式 shell。这将打开一个与 Bash 的交互式 session 并在其中运行 ls
,但如果 .bashrc
被自定义为更改 PS1
,它可能会失败。
child = pexpect.spawn('bash')
child.expect(r'\$')
child.sendline('ls')
child.expect(r'\$')
child.close()
也就是说,Bash 历史很容易被绕过。它仅在交互式 session 结束时写入,并且可以在 session 期间更改,因此
$ rm very_important_file
$ history -c
或
$ kill -9 $$
不会出现在 .bash_history
中。这甚至在 restricted Bash 中也是可能的.
如果您需要更可靠的东西,我建议设置 system auditing .
关于python - 是否可以使用 pexpect 生成将显示在 bash 历史记录中的 bash shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646104/