欢迎,来自IP地址为:44.200.122.214 的朋友
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命令的两种方法。