【问题标题】:How to get notified, if a specific command is run in bash如果在 bash 中运行特定命令,如何获得通知
【发布时间】:2018-06-05 16:26:26
【问题描述】:

我有一个要求。当任何用户运行 unix 命令时,我需要打印特定消息。 例如,如果有人运行 cat 命令或 cat 命令在命令行上执行。我需要终端上的自定义消息。

【问题讨论】:

  • 我会考虑在Unix & Linux 提出这个问题,因为这不是关于软件开发的问题,而是关于系统配置和监控的问题。 (现在,如果您已经决定了一种方法,并且想要帮助解决在开发 shim 程序期间遇到的特定问题、解析 sysdig 输出的工具,或者在尝试为此实现工具时遇到的其他特定软件开发问题目的,这很可能是这里的主题)。
  • 希望对您有所帮助stackoverflow.com/questions/5750450/…
  • @Wellwisher,这里的 OP 想要一些适用于整个系统(跨多个用户帐户等)的东西。

标签: linux bash shell


【解决方案1】:

使用spydig:

sysdig -c spy_users

备选方案 1

watch 执行w

watch -n,5 w -h
  • w 向您展示用户的实际操作
  • watch 在用户给定的时间间隔(本例中为 0.5 秒)内重复调用命令(本例中为 w

备选方案 2

查看用户 shell 历史记录,例如.bash_history:

tail -f /home/userxyz/.bash_history

【讨论】:

  • 这里的sysdig 方法是唯一一种既不易于竞争也不限于仅显示在非常特定情况下启动的命令的方法。如果完全保留其他“选项”,我建议先显示它。
【解决方案2】:

从您的搜索路径中删除 cat 并将其替换为您的包装脚本。将原始命令放在其他地方。确保正确处理退出代码。

【讨论】:

  • 您可能会更明确地说明这一点——即。显示实际命令(mv /usr/bin/cat{,_real}cat >/usr/bin/cat <<EOF#!/bin/shmail -s "cat was run" admin@wherever </dev/null >/dev/null 2>&1exec /usr/bin/cat_real "$@"EOF,或诸如此类)。
【解决方案3】:

你可以安装包“psacct”/“acct”

apt-get install acct
or
yum install psacct

使用

启用它
systemctl enable psacct
systemctl start psacct

现在您可以检查用户在系统上运行的所有内容。

ac user
ac -d user
lastcomm
lastcomm user

还可以查看“auditd”以获取更多的事件审计和日志记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多