当前位置: 首页 > wzjs >正文

网站 建设 外包深圳市建设注册执业资格中心网站

网站 建设 外包,深圳市建设注册执业资格中心网站,厦门网上房地产,外贸网店平台python shlex 核心函数 shlex.split(s, commentsFalse, posixTrue) 作用:将字符串按类似 Shell 的语法规则分割成参数列表,常用于安全处理命令行输入。参数说明: s(必需): 待分割的字符串(如 “ls -l ‘…

python shlex

核心函数

  1. shlex.split(s, comments=False, posix=True)
  • 作用:将字符串按类似 Shell 的语法规则分割成参数列表,常用于安全处理命令行输入。
  • 参数说明:
    s(必需): 待分割的字符串(如 “ls -l ‘file name’”)。
    comments(默认 False): 是否保留注释(以 # 开头的内容)。
    posix(默认 True): 是否启用 POSIX 模式(正确处理引号和转义符)。
import shlex 
print(shlex.split("echo  'Hello World'"))  # 输出:['echo', 'Hello World']
print(shlex.split("ls  #注释", comments=True))  # 输出:['ls', '#注释']
  1. shlex.quote(s)
  • 作用:对字符串进行安全 Shell 转义,防止命令注入攻击。
    参数:
  • s: 需要转义的字符串(如包含空格或特殊字符的路径)。
filename = "file; rm -rf /"
safe_cmd = f"ls {shlex.quote(filename)}"   # 输出:ls 'file; rm -rf /'
  1. 举例
  • 场景:执行带有空格和引号的命令
import shlex 
import subprocess # 原始命令字符串(含空格文件名)
cmd_str = 'ls -l "my document.txt"' # 使用 shlex 安全分割 
args = shlex.split(cmd_str) 
print("分割后的参数列表:", args)  
# 输出: ['ls', '-l', 'my document.txt'] # 执行命令 
result = subprocess.run(args,  capture_output=True, text=True)
print("执行结果:", result.stdout) 
# 输出 -rw-r--r-- 1 user group 1024 Feb 19 21:00 my document.txt  
  • 场景:通过管道传递数据
cmd_str = 'echo "Hello | World" | grep "World"'
args = shlex.split(cmd_str) # 使用 shell=True 启用管道功能(需谨慎)
result = subprocess.run(args,  shell=True, capture_output=True, text=True)
print("分割后的参数列表:", args)  # 输出: ['echo', 'Hello | World', '|', 'grep', 'World']
print("执行结果:", result.stdout)   # 输出: Hello | World 
* 关键说明:* 若 shell=False(默认),管道符 | 会被视为普通字符导致失败* 此处 shell=True 仅为演示管道功能,实际建议用 subprocess.PIPE 替代 
  • 场景:执行含变量和引号的命令
cmd_str = 'python -c "import os; print(os.getenv(\'USER\'))"' 
args = shlex.split(cmd_str) # 执行并捕获输出 
result = subprocess.run(args,  capture_output=True, text=True)
print("分割后的参数列表:", args)
# 输出: ['python', '-c', 'import os; print(os.getenv(\'USER\'))'] print("用户环境变量值:", result.stdout.strip())   # 输出: admin 
  • 根据用户输入动态生成命令
user_input = 'file with spaces.log' 
cmd_str = f'grep "error" {shlex.quote(user_input)}'   # 自动添加引号 
args = shlex.split(cmd_str) print("安全分割后的命令:", args)  
# 输出: ['grep', 'error', 'file with spaces.log'] # 执行命令 
subprocess.run(args) 
  • 综合案例:执行复杂查找命令
cmd_str = 'find /logs -name "*.log" -exec grep -H "404" {} \;'
args = shlex.split(cmd_str) result = subprocess.run( args, stdout=subprocess.PIPE, text=True,check=True 
)
print("找到的404错误日志:")
print(result.stdout) 
* 预期输出示例
* /logs/access.log:127.0.0.1  - [404] GET /missing-page 
* /logs/nginx/error.log:[404]  File not found: /old-link 
  • 总结
    • 安全分割:shlex.split() 可正确处理空格、引号等特殊字符 13
    • 避免命令注入:优先使用列表参数 + shell=False(默认)
    • 管道处理:需要管道功能时配合 shell=True,但需严格验证输入
    • 动态命令构建:使用 shlex.quote() 处理用户输入中的特殊字符
http://www.dtcms.com/wzjs/597998.html

相关文章:

  • 精品课程网站建设 碧辉腾乐计算机前端
  • 广东专业网站优化公司postgresql做网站用什么环境
  • 2021年有没有人给个网站推广资源seo
  • 中国建设银行山西分行招聘网站公司域名更改 网站怎么做提示
  • 东营做网站优化多少钱用ps做网站网页
  • 建立一个网站需要什么网页游戏宣传片排行榜
  • 建立网站需要多少钱责任y湖南岚鸿联系台州论坛
  • 北京网站设计制作飞沐北京新浪网站制作公司
  • 创意网站页面设计全国最大房产网络平台
  • 网站内部链接的作用有哪些中国十大招商平台
  • 利川做网站建设企业网站的流程
  • 我的网站刚换了一个模板收录很多就是没排名网站建设面谈话术
  • 长春网站建设模板样式wordpress绑定多郁闷
  • 云主机上传网站品牌推广策划书范文案例
  • 网站设计公司长沙公司手机网页编辑软件
  • 作作网站上海有哪些大公司
  • 网站左下角广告代码长春网站制作套餐
  • 建设一个游戏网站需要多少钱上海网站seo招聘
  • 怎么做网站空间建设网站需要申请
  • 巩义网站建设价格汉中免费做网站
  • 公司网站怎么建立龙岗网络推广公司
  • 地图制作网站WordPress出现503报错
  • 什么网站做ppt赚钱做紧固件上什么网站
  • 张家界商城网站建设ps如何做psd模板下载网站
  • 世界十大网站排名商务网站模块设计时前台基础设施建设
  • 怎么识别网站开发语言仿牌网站容易被攻击吗
  • 网站着陆页 推荐邢台一天seo
  • 移动网站优化排名wap网站开发教程
  • 慕课网站开发与实现湖北响应式网页建设企业
  • 拼多多搜索关键词排名华企网站建设推广优化