You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找写入information级别日志且来源为*** script的脚本

问题

我需要定位写入information级别日志的脚本,目前仅能在日志的source字段中看到「*** script」选项,无法确定具体是哪个脚本执行了日志写入操作,请问有哪些可行的排查思路?

可行排查方案

1. 全局Shell执行审计

  • 追加调试规则到全局或用户级Shell配置文件(/etc/profile、/etc/bash.bashrc、~/.bashrc、~/.zshrc等),记录所有执行的命令/脚本上下文:
export PROMPT_COMMAND='echo "$(date "+%Y-%m-%d %H:%M:%S") | 执行用户: $USER | 当前路径: $PWD | 执行命令: $BASH_COMMAND" >> /var/log/shell_exec_audit.log'
  • 待目标info日志生成后,匹配两者的时间戳,即可直接定位到对应执行的脚本路径。
  • 排查完成后删除追加的配置即可,不会影响系统原有逻辑。

2. 日志写入入口埋点

  • 首先确认当前系统写日志的公共调用入口,常见的有系统自带的logger命令、各编程语言的日志库公共方法。
  • 以logger为例,临时替换为带审计功能的包装脚本:
    1. 备份原二进制:cp /usr/bin/logger /usr/bin/logger.orig
    2. 新建/usr/bin/logger包装脚本:
#!/bin/bash
echo "$(date "+%Y-%m-%d %H:%M:%S") | 调用进程PID: $$ | 父进程PID: $PPID | 调用进程命令行: $(cat /proc/$$/cmdline | tr '\0' ' ') | 父进程命令行: $(cat /proc/$PPID/cmdline | tr '\0' ' ')" >> /var/log/logger_audit.log
exec /usr/bin/logger.orig "$@"
  1. 给脚本加执行权限:chmod +x /usr/bin/logger
  • 待目标日志生成后查看/var/log/logger_audit.log即可定位调用脚本。
  • 排查完成后执行mv /usr/bin/logger.orig /usr/bin/logger恢复原配置。

3. 系统级进程追踪

  • 用auditd配置审计规则监控日志写入入口的调用行为:
# 以监控logger调用为例
auditctl -w /usr/bin/logger -p x -k logger_call_audit
  • 待日志生成后执行ausearch -k logger_call_audit即可查看所有调用logger的进程详情,包含脚本路径、执行用户、执行时间等信息。
  • 也可以用bcc工具集的execsnoop工具实时捕获系统所有新启动的进程,匹配日志生成时间对应溯源。

4. 静态脚本特征扫描

  • 若无法进行实时调试,可全量扫描系统内的可执行脚本,匹配日志写入特征:
# 扫描所有常见脚本类型中包含info级别日志写入的文件
find / -type f \( -name "*.sh" -o -name "*.py" -o -name "*.js" -o -name "*.php" \) | xargs grep -l -i "information\|info.*log" 2>/dev/null
  • 对扫描结果中的脚本逐一核对日志输出逻辑,匹配*** script的来源特征即可。

内容的提问来源于stack exchange,提问作者user3065815

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:39:01