加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

确定shell脚本的函数和文件依赖性?

发布时间:2020-12-16 01:12:45 所属栏目:安全 来源:网络整理
导读:我正在寻找一种处理 shell脚本的方法来确定: 在脚本中调用哪些命令,脚本或函数. 脚本(r或w)访问哪些文件. 它不需要通过依赖关系进行递归,只需列出它直接运行的内容.我本可以写一些自己这样做的东西,但它必须在之前完成……我只是没找到它. 您可以使用’stra
我正在寻找一种处理 shell脚本的方法来确定:

>在脚本中调用哪些命令,脚本或函数.
>脚本(r或w)访问哪些文件.

它不需要通过依赖关系进行递归,只需列出它直接运行的内容.我本可以写一些自己这样做的东西,但它必须在之前完成……我只是没找到它.

您可以使用’strace’来运行脚本并查看脚本及其子进程所执行的所有操作,包括查找和打开文件.例如:
$cat foo.sh
#!/usr/bin/env bash

touch /tmp/foon
$chmod +x foo.sh
$strace -f -e execve,access,open,stat -o foo.trace ./foo.sh
$cat foo.trace
32176 execve("./foo.sh",["./foo.sh"],[/* 42 vars */]) = 0
32176 access("/etc/ld.so.nohwcap",F_OK) = -1 ENOENT (No such file or directory)
32176 access("/etc/ld.so.preload",R_OK) = -1 ENOENT (No such file or directory)
32176 open("/usr/local/lib/tls/x86_64/libc.so.6",O_RDONLY) = -1 ENOENT (No such file or directory)
...
32176 execve("/bin/bash",["bash","./foo.sh"],[/* 42 vars */]) = 0
...
32177 execve("/usr/bin/touch",["touch","/tmp/foon"],[/* 41 vars */]) = 0
32177 open("/tmp/foon",O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK,0666) = 3
...
32176 --- SIGCHLD (Child exited) @ 0 (0) ---
$

我已经修剪了很多其他活动(打开系统库;查找区域设置数据;等等).查看’man strace’,了解选项的含义细节; -f,-o和-e是我经常使用的那些.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读