如何从python代码调用shell脚本?


当前回答

请尝试以下代码:

Import Execute 

Execute("zbx_control.sh")

其他回答

为了在python脚本中运行shell脚本,并从ubuntu中的特定路径运行它,请使用下面的方法;

import subprocess

a= subprocess.call(['./dnstest.sh'], cwd = "/home/test") 

print(a)

CWD是当前工作目录

下图将不能在Ubuntu中运行;这里我们需要删除'sh'

subprocess.call(['sh' ,'./dnstest.sh'], cwd = "/home/test")

我知道这是一个老问题,但我最近偶然发现了这个问题,它最终误导了我,因为Subprocess API自python 3.5以来发生了变化。

执行外部脚本的新方法是使用run函数,它运行args所描述的命令。等待命令完成,然后返回一个CompletedProcess实例。

import subprocess

subprocess.run(['./test.sh'])

子流程模块将帮助您解决这个问题。

显而易见的小例子:

>>> import subprocess
>>> subprocess.call(['sh', './test.sh']) # Thanks @Jim Dennis for suggesting the []
0 
>>> 

其中test.sh是一个简单的shell脚本,0是这次运行的返回值。

import os
import sys

假设test.sh是您想要执行的shell脚本

os.system("sh test.sh")

如果你想传递一些参数到你的shell脚本,你可以使用shlex.split()方法:

import subprocess
import shlex
subprocess.call(shlex.split('./test.sh param1 param2'))

将test.sh放在同一个文件夹中:

#!/bin/sh
echo $1
echo $2
exit 0

输出:

$ python test.py 
param1
param2