欢迎,来自IP地址为:34.204.52.16 的朋友


Python是一款非常出色的脚本语言,越来越多的系统管理员开始使用Python将日常工作自动化。

由于系统管理工作多为执行Linux命令,通过Python脚本来执行系统命令对于管理员来说帮助巨大。

本教程将演示使用Python脚本来执行Shell命令的并获得命令执行结果的两种方法。

使用Python的os模块来执行Shesll命令

我们首先创建一个Python脚本”prog.py”,然后在脚本中添加如下内容:

import os
myCmd = 'ls -la'
os.system(myCmd)

脚本首先引入os模块,然后定义一下Shell命令字符串,最后使用os模块的system方法执行该命令。系统输出内容会同样通过该方法回显给用户。执行示意图如下:

执”prog.py”的输出结果同执行”ls -la”命令的结果是一致的,表示该命令已经成功执行。

当然,如果想将输出内容重定向到文件中,对于脚本内容修改如下:

import os
myCmd = 'ls -la > out.txt'
os.system(myCmd)

当然,这并不是通过Python脚本进行的输出重定向,而是利用了Shell本身的功能。

对于命令字符串的定义,也可以采用如下方式:

import os
myCmd = os.popen('ls -la').read()
print(myCmd)

以上脚本的输出结果同之前脚本的输出结果是一致的。

使用Python的subprocess模块来执行Shesll命令

一个相对比较轻量级的执行Shell命令的方法是使用subprocess模块。

如果仅仅执行Shell命令而不使用任何选项和参数,则可以采用如下方式执行命令:

import subprocess
subprocess.call("ls")

如果执行的命令含有参数或选项,那么需要将命令和选项以如下方式置于链表中供”subprocess.call”方法调用:

import subprocess
subprocess.call(["ls", "-l", "."])

最后,如果想将输入内容重定向,可以使用不同于Shell重定向的方法,由”subprocess”模块自行完成。首先使用模块的Popen函数,产生一个输出对象,然后使用该对象的”communicate()”获取对应输出内容,最后将结果打印出来。示例代码如下:

import subprocess
MyOut = subprocess.Popen(['ls', '-l', '.'], 
            stdout=subprocess.PIPE, 
            stderr=subprocess.STDOUT)
stdout,stderr = MyOut.communicate()
print(stdout)
print(stderr)

可以看到,程序输出了标准输出和标准错误的内容(None),并且全部输出重定向是由脚本自行完成。

以上就是Python脚本执行Shell命令的两种方法。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注