美文网首页Python
python3 中执行系统命令

python3 中执行系统命令

作者: tafanfly | 来源:发表于2019-10-08 15:13 被阅读0次
Date Tags
2019/10/8 Python3, subprocess

前言

Python中往往需要执行系统命令, 下面这些模块可以帮助完成。

  • os.system
  • os.popen
  • commands
  • subprocess

os.system

这是通过调用标准C函数system()命令实现的,并且具有相同的限制条件。
在Unix平台上, 返回值是执行命令的 状态码,0表示成功,其他表示失败。并将命令执行结果输出到屏幕上。

import os

print (os.system("mkdir test_system"))
0

print (os.system("mkdir test_system"))
mkdir: cannot create directory ‘test_system’: File exists
256

在linux环境中,第一次创建test_system文件夹成功,返回值为0, 第二次创建失败,因为文件夹已经有了, 所以返回值为256

os.popen

该方法通过调用管道的方式来实现的,在调用结束后,会返回一个 file 对象,支持read()和write()方法,具体根据command而定。

  • 可以获取命令执行结果,但无法获取命令执行状态码
  • 调用会阻塞当前线程,直到运行完毕

os.popen(command [, mode, buffering])
command:调用命令
mode:返回 file 对象的模式,默认为 “r” 只读模式
buffering:缓冲区大小,默认 -1 为无限制

import os

print (os.popen('pwd').read())
/home/ta/workspace

commands

commands模块只存在于Python 2.7+,且不支持Windows平台。
python3.x中移除, 被subprocess.getstatusoutput()替代, 由于返回值中无法区分stderr和stdout。

subprocess

python3 中subprocess的运用

联系与区别

函数名 描述 限制
os.system(cmd) 返回命令执行状态码,并将命令执行结果输出到屏幕
os.popen(cmd) 返回file对象,调用read()和write()方法获取命令执行结果,无法获取命令执行状态码
commands.getstatusoutput(cmd) 返回一个元组(命令执行状态码,执行结果) 只存在于Python 2.7,且不支持Windows平台, python3.x中移除, 被subprocess.getstatusoutput()替代
subprocess 新开一个子进程,让其执行别的程序

在Python中执行系统命令,不同的场景中可以考虑使用不同的函数,但是os.systemos.popencommands.getstatusoutput这些函数都是可以被subprocess函数替代的, 见subprocess-replacements

相关文章

  • python3 中执行系统命令

    前言 在Python中往往需要执行系统命令, 下面这些模块可以帮助完成。 os.system os.popen c...

  • SSTI实践

    文章参考绕过python沙盒在python3中,文章中是这样绕过python沙盒的 但是这样的方式想要执行系统命令...

  • Playground for Python - Html爬虫解析

    环境安装 Mac系统默认安装了Python2,如果想安装Python3,执行以下命令: brew install ...

  • Python 沙箱逃逸 Payload 收集

    读取文件 在 linecache 中寻找 os 模块执行系统命令 在自模块中寻找 os 模块执行系统命令 读取重要...

  • Python3 subprocess.check_output返

    Python3中的subprocess.check_output函数可以执行一条sh命令,并返回命令的输出内容,用...

  • Mac 上执行.py文件

    1,获取Python解释器 执行命令type -a python3 得到结果python3 is /usr/loc...

  • 2.命令执行漏洞

    定义:攻击者可以随意执行系统命令,命令可以连接执行:&,||,| 命令执行漏洞:直接调用操作系统命令 代码执行漏洞...

  • 命令执行漏洞

    命令执行 利用条件 应用调用执行系统命令的函数 将用户输入作为系统命令的参数拼接到了命令行中 没有对用户输入进行过...

  • 命令执行漏洞

    命令执行 利用条件 应用调用执行系统命令的函数 将用户输入作为系统命令的参数拼接到了命令行中 没有对用户输入进行过...

  • 解决Ubuntu中telnet 127.0.0.1时Unable

    问题定位 执行命令$ telnet 127.0.0.1报错 错误原因 能够执行telnet命令并不代表系统中安装了...

网友评论

    本文标题:python3 中执行系统命令

    本文链接:https://www.haomeiwen.com/subject/ianvuctx.html