commands模块
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数:
1.commands.getoutput('shell command')
执行shell命令,返回结果(string类型)
-
In [2]: commands.getoutput('pwd')
-
Out[2]: '/root'
2. commands.getstatus('file')
该函数已被python丢弃,不建议使用,它返回 ls -ld file 的结果(String
-
In [3]: commands.getstatus('paramiko-1.16.1.tar.gz')
-
Out[3]: '-rw-r--r-- 1 root root 269824 Oct 2 14:27 paramiko-1.16.1.tar.gz'
3. commands.getstatusoutput('shell command')
执行shell命令, 返回两个元素的元组tuple(status, result),status为int类型,result为string类型。
cmd的执行方式是{ cmd ; } 2>&1, 故返回结果包含标准输出和标准错误.
-
In [10]: commands.getstatusoutput('w')
-
Out[10]:
-
(0,
-
' 09:21:14 up 8 min, 2 users, load average: 0.00, 0.02, 0.00\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 9.110.187.1 09:12 0.00s 0.39s 0.38s /usr/bin/python\nroot pts/1 9.110.187.1 09:14 6:19 0.00s 0.00s -bash')
sys 模块
sys模块包括了一组非常实用的服务,内含很多方法和,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互。
1.
sys模块重要函数变量
1 )、 sys.stdin 标准输入流。
2)、sys.stdout 标准输出流。
3 )、 sys.stderr 标准错误流。
4 )、sys.path 查找模块所在目录的目录名列表。
5 )、sys.argv 命令行的参数,包括脚本名称。
6 )、sys.platform 返回当前系统平台,如:win32、Linux等。
2.
sys常用方法使用说明
sys.exit方法可以退出当前的程序,可以提供一个整数类型,通常我们用0表示功能,做为这个方法的参数,
当然也可以用参数,表示错误不成功的报错信息。sys.modules方法可以将模块的名字映射到实际存在的模块上,它只应用于目前导入的模块。上面有3个模块变量:sys.stdin、sys.stdout、sys.stderr它们都是文件(file-like)流对象。
实例如下:
-
#!/usr/bin/env python
-
# -*- coding:utf-8 -*-
-
# Author :Alvin.Xie
-
# @Time :2017/11/11 9:28
-
# @File :systest.py
-
-
import sys
-
# 使用sys.argv[0]获得脚本名称
-
print 'Script name is :', sys.argv[0]
-
# 根据sys.path的路径来搜索module.name
-
print 'Path has', sys.path
-
-
# 使用sys模块查找内建模块
-
-
-
def dump(module):
-
print module, '=>',
-
if module in sys.builtin_module_names:
-
print '内建模块'
-
else:
-
module = __import__(module)
-
print module.__file__
-
-
-
dump("os")
-
dump("sys")
-
dump("string")
-
dump("strop")
-
dump("zlib")
执行结果如下:
Script name is : D:/PycharmProjects/s13/day6/systest.py
Path has ['D:\\PycharmProjects\\s13\\day6', 'D:\\PycharmProjects\\s13', 'C:\\Windows\\system32\\python27.zip', 'C:\\python\\python27\\DLLs', 'C:\\python\\python27\\lib', 'C:\\python\\python27\\lib\\plat-win', 'C:\\python\\python27\\lib\\lib-tk', 'C:\\python\\python27', 'C:\\python\\python27\\lib\\site-packages']
os => C:\python\python27\lib\os.pyc
sys => 内建模块
string => C:\python\python27\lib\string.pyc
strop => 内建模块
zlib => 内建模块
阅读(1288) | 评论(0) | 转发(0) |