Python 下有什么 Bash Shell 脚本的解析库? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
piaochen0
V2EX    Python

Python 下有什么 Bash Shell 脚本的解析库?

  •  
  •   piaochen0 2020 年 12 月 3 日 2748 次点击
    这是一个创建于 1902 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近项目需要在 python 下解析 bash shell 脚本,对其中解析到的命令,进行风险识别。
    目前在试了下 github 上的 bashlex 库

    目前试了几个脚本,就发现了一些问题:
    1.不支持注释
    2.空行不支持
    3.$((..))不支持
    4.部分方法声明调用也会报错
    还有部分空格之类的会报错

    当然这些都是可以前置处理的,不过不知道接下来还有什么坑。
    想问问各位有没有其他更好的 shell 脚本解析库。

    7 条回复    2020-12-03 15:04:47 +08:00
    factoid
        1
    factoid  
       2020 年 12 月 3 日 via iPhone
    不太懂你的解析是什么意思,paramiko 库可以 ssh 上,可以执行 shell 脚本,
    abersheeran
        2
    abersheeran  
       2020 年 12 月 3 日
    就是对 Bash Shell 做语法解析呗。这个需求感觉蛮少的,如果你谷歌不到,那估计就是真没有。
    chizuo
        3
    chizuo  
       2020 年 12 月 3 日
    @factoid 题主意思是 parser 吧,查了查好像就 bashlex 支持还算完整了,
    实在不行,看着源码改吧,捡起你的编译知识
    piaochen0
        4
    piaochen0  
    OP
       2020 年 12 月 3 日
    @chizuo #3 是的 parser,目前我也只找到了 bashlex 能跑起来的,还试了 simple-shell-parser,发现 import 都直接报异常。
    aloxaf
        5
    aloxaf  
       2020 年 12 月 3 日
    我觉得你的方向错了,bash 这种混乱的玩意儿你想通过静态分析来规避掉危险命令是不可能的……
    piaochen0
        6
    piaochen0  
    OP
       2020 年 12 月 3 日
    @aloxaf #5 我也觉得方向错了,上头要做这个需求,没办法。昨天在另外一个帖子里,就探讨过这个问题了。
    丢个链接: t/731372#reply17
    no1xsyzy
        7
    no1xsyzy  
       2020 年 12 月 3 日
    你这之前的讨论没看到
    其实最好的方案是不用 shell,类似 Ansible 那样做成元信息的方式,然后自己调用 FileSystem API 去处理(也包括自己写个 shell )。
    次一等是白名单,任何不按格式来绕过的尝试全否决了
    再次一等就是换用 SeLinux 这种强权限控制
    要么就是初步判断解析然后人工 Review
    之后就是随便糊弄一下,假装弄了点搞头,到时候你就输入一下,然后 “看,拦截下来了”
    最末一等是认认真真做出来这么个工具,然后被各种奇技淫巧一秒骗过( python -c )
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1860 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:39 PVG 17:39 LAX 01:39 JFK 04:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86