Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python调用命令行实用程序_Python_Terminal_Debian_Strace - Fatal编程技术网

从Python调用命令行实用程序

从Python调用命令行实用程序,python,terminal,debian,strace,Python,Terminal,Debian,Strace,我目前正试图利用strace自动跟踪程序的系统调用。然后,为了解析和处理获得的数据,我想使用Python脚本 我现在想知道,我该如何从Python中调用strace? Strace通常通过命令行调用,我不知道从Strace编译的任何C库可以使用 通过Python通过命令行模拟访问的一般方法是什么? 或者:有没有类似于用Python本机编写的strace的工具 我很感谢你的帮助 没什么,因为我不懂您可以使用以下命令: import commands cmd = "strace command" r

我目前正试图利用strace自动跟踪程序的系统调用。然后,为了解析和处理获得的数据,我想使用Python脚本

我现在想知道,我该如何从Python中调用strace? Strace通常通过命令行调用,我不知道从Strace编译的任何C库可以使用

通过Python通过命令行模拟访问的一般方法是什么? 或者:有没有类似于用Python本机编写的strace的工具

我很感谢你的帮助


没什么,因为我不懂

您可以使用以下命令:

import commands
cmd = "strace command"
result = commands.getstatusoutput(cmd)
if result[0] == 0:
   print result[1]
else:
   print "Something went wrong executing your command"

result[0]
包含返回代码,
result[1]
包含输出。

您需要使用
子流程
模块

它有
check\u output
读取输出并将其放入变量,还有
check\u call
只检查退出代码

如果要运行shell脚本,可以将其全部写入字符串并设置
shell=True
,否则只需将参数作为字符串放入列表中即可

import subprocess
# Single process
subprocess.check_output(['fortune', '-m', 'ciao'])
# Run it in a shell
subprocess.check_output('fortune | grep a', shell=True)

请记住,如果您在shell中运行东西,如果您没有正确地转义并允许用户数据进入字符串,则很容易造成安全漏洞。最好不要使用Python2和Python3(3.5之前版本)

只需执行:

subprocess.call(["strace", "command"])
执行并返回要处理的输出:

output = subprocess.check_output(["strace", "command"])
参考:

Python 3.5+

output = subprocess.run(["strace", "command"], caputure_output=True)

参考资料:

您知道python有一个
子流程
模块,完全不需要依赖其他库?
子流程。检查输出('fortune | grep a',shell=True)
在那里,不再依赖无用的模块。