如何拦截启动bash脚本的命令

如何拦截启动bash脚本的命令

如果我从命令行运行 bash 脚本(具有 root 权限),是否可以拦截脚本内的启动命令(当脚本仍在运行时)以记录它?

我试着说得更清楚。我从命令行启动一个带有以下语句的脚本: ./reconfig.sh -host localhost ... 和其他参数。在脚本内部,当它运行时,会写入一个日志文件,我还想在其中记录启动命令。

答案1

如果可以选择编辑脚本,您可以添加“logger”命令来将您想要的任何内容记录到系统日志中。

在我的 Fedora 系统上,

/usr/bin/logger $USER 刚刚运行了 $0

从 bash 提示符运行,添加带有当前时间戳的日志条目,我的登录 ID[记录器命令的 PID] 的来源刚刚运行 bash

您可以将所需的任何信息添加到该记录器命令的消息中。您甚至可以将标准从另一个命令传输到记录器命令。

$0 是一个特殊变量,它保存当前运行的命令的名称(当处于 bash 提示符时为 bash,但在脚本中,它将是脚本的文件名)

如果您有权访问将运行您要记录的进程的用户的 .bashrc 或其他启动文件,您还可以创建别名。

我刚刚尝试过:

alias logls='/usr/bin/logger 列出目录; ls'

然后登录

并获取当前目录的列表以及系统日志中带时间戳的日志条目。

如果别名设置为与原始脚本相同的名称,那么对于用户来说将是非常透明的。当然,您可能必须在别名的定义中指定原始脚本的完整路径。

相关内容