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


当前回答

为了在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")

其他回答

请尝试以下代码:

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模块是启动子进程的好模块。 你可以使用它来调用shell命令,如下所示:

subprocess.call(["ls","-l"]);
#basic syntax
#subprocess.call(args, *)

你可以在这里看到它的文档。

如果您的脚本是用.sh文件或长字符串编写的,那么您可以使用os。系统模块。调用它相当简单和容易:

import os
os.system("your command here")
# or
os.system('sh file.sh')

该命令将运行脚本一次,直到完成,然后阻塞直到退出。

如果您的shell脚本文件没有执行权限,请按照以下方法执行。

import subprocess
subprocess.run(['/bin/bash', './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