首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用pexpect生成bash命令,这些命令将显示在bash历史记录中?

是否可以使用pexpect生成bash命令,这些命令将显示在bash历史记录中?
EN

Stack Overflow用户
提问于 2017-08-12 03:05:57
回答 2查看 1.8K关注 0票数 0

作为一个sys管理员,我试图在虚拟机上模拟一个用户来测试日志文件监控。

模拟用户将自动执行各种任务,这些任务应该显示在bash历史记录、"ls“、"cd”、“触摸”等。由于bash历史记录记录了bash历史记录,所以它们在bash历史记录中显示是非常重要的。

我考虑过直接写到bash历史,但更愿意更准确地模拟用户的行为。原因是bash历史记录不是唯一被监视的日志文件,如果同一事件的日志保持同步将更好。

安装了CentOS Linux7.3.1611Python2.7.5版本的详细信息

我已经尝试过使用pexpect.run( 'ls‘)或pexpect.spawn('ls'),’ls‘在bash历史记录中没有使用这两个命令。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-12 04:51:34

Bash日志记录只适用于交互式shell。这将打开带有Bash的交互式会话,并在其中运行ls,但如果定制.bashrc以更改PS1,则可能会失败。

代码语言:javascript
复制
child = pexpect.spawn('bash')
child.expect(r'\$')
child.sendline('ls')
child.expect(r'\$')
child.close()

话虽如此,巴什历史很容易被忽略。它只在交互式会话结束时编写,并且可以在会话期间进行更改,因此

代码语言:javascript
复制
$ rm very_important_file
$ history -c

代码语言:javascript
复制
$ kill -9 $$

不会出现在.bash_history中。这甚至在限制巴什中也是可能的。

如果您需要更可靠的东西,我建议设置系统审计

票数 1
EN

Stack Overflow用户

发布于 2017-08-16 16:16:26

简短的回答似乎是否定的,你不能用pexpect来做这件事。

Auditd是跟踪用户输入的一种可能的替代方法,但我还没有弄清楚如何让它记录'ls‘和'cd’这样的命令,因为它们不调用system ()命令。我发现的最好的工作是使用脚本命令,它打开另一个交互终端,其中输入的每个命令都会被记录下来。您可以使用脚本命令输出到的文件(默认情况下是类型记录)来记录所有用户命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45646104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档