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

网站建设 找vx cp5173东莞网站建设公司

网站建设 找vx cp5173,东莞网站建设公司,标志设计公司成都,巩义网站建设定制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/218080.html

相关文章:

  • 公众号购物做网站还是小程序旅行网站排名
  • 网站文件保护怎么做网上销售平台有哪些
  • 网站建设互联网 政府系统seo入门基础教程
  • 怎么做网站和服务器吗群推广
  • 营销网站建设的原则百度营销平台
  • 青海旭云网络做网站需要多少钱大数据精准营销的策略
  • 华为云建设网站品牌策划案
  • gif图片制作器seo 页面
  • app开发网站开发教程长沙谷歌seo
  • 商城网站建设非国产手机浏览器
  • 运营一个app大概多少钱南昌seo顾问
  • 苏州网站优化山东最新资讯
  • 制作英文网站女儿考试没圈关键词
  • 做网站培训宁波seo企业推广
  • ps做专业网站南昌百度推广联系方式
  • 深圳网络营销推广中心德州seo整站优化
  • 根据网站做app营销案例分析
  • 广州牌手表网站360搜索引擎地址
  • wordpress 国内广告贵州网站seo
  • 胶州国际网站建设效果国内搜索引擎有哪些
  • 网站的滚动图片怎么做如何自己创建一个网站
  • 如何用区块链加密wordpress旺道智能seo系统
  • 网站建设与管理模拟题1企业网站建设要多少钱
  • 企网官方网站新网
  • 站规划在网站建设中的作用广州番禺发布
  • 上海装修公司网站建设百度推广费
  • 专业建设外贸网站制作最新网站查询
  • 舟山市建设局网站百度管理员联系方式
  • 手机上的软件网站建设品牌推广方案模板
  • 筑梦做网站福鼎网站优化公司