关于python中命令执行函数的返回值的研究
前言
事情的开始是在做一道ctf题目的时候发现会返回一个数字,比如0,512 …
分析了一下发现其实是python的os.system执行命令之后返回的状态码,于是我就想到能否利用这个返回值来带出数据呢,于是我进行了对各种命令执行函数的探索
各种命令执行函数
os.system

可以看到在命令执行之后会返回一个数字0,0其实就是表示命令执行成功
如果失败会返回什么呢?我们来执行一个windows中没有的命令

返回了1
对于为什么会返回这些值,我去查看了python的源码

linux上面的的返回结果与windows有一点区别,但是如果是执行成功的话都是返回0
这些整数显然是命令执行的状态码,用来判断命令执行是否正常
由于返回值不可控,所以无法利用他来带出数据
os.popen
想要带出输出,不难想到使用popen函数,他的功能是执行命令并通过文件对象接口获取输出,配合上read()就能捕获到命令执行的结果

显然这个是可以帮助我们带出数据的
subprocess.run
subprocess.run函数的返回值是一个对象

参数列表中有一个参数是capture_output,默认值为False,不会捕获输出,当我们将其设置为true的时候,就能捕获到输出

同样也可以用来带出数据
subprocess.getoutput
注意到subprocess中有一个函数

这个函数的返回值就是执行命令的输出,完全符合我们的目的

直接就可以带出数据
subprocess.getstatusoutput
返回命令执行的状态码和执行结果

总结
暂时没有想到有什么利用场景,但是感觉探索的过程蛮有意思的,随便记录一下啦
关于python中命令执行函数的返回值的研究
http://example.com/2025/10/14/关于python中命令执行函数的返回值的研究/