python之返回状态commands模块
需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands很容易做到以上的效果.
commands.getstatusoutput(cmd) 返回一个元组(status,output)
status代表的shell命令的返回态,如果成功的话是0;output是shell的返回的结果
实例:
>>> import commands >>> commands.getstatusoutput('ls /bin/ls') (0, '/bin/ls') >>> commands.getstatusoutput('cat /bin/junk') (256, 'cat: /bin/junk: No such file or directory') >>> commands.getstatusoutput('/bin/junk') (256, 'sh: /bin/junk: not found') >>> commands.getoutput('ls /bin/ls') '/bin/ls'
应用场景-----监控磁盘状态
#!/usr/bin/env python #coding:utf-8 import commands import sys import time STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 def foo(): j = 0 try: for i in ['a','b','c']: stat=commands.getstatusoutput('smartctl -H /dev/sd%s' %i) if stat[0] == 0: pass #print '/dev/sd%s is ok;' %i, else: print '/dev/sd%s is error;' %i, j+=1 if j != 0: print 'Error - the %s diskes is error,' %j,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) sys.exit(STATE_CRITICAL) else: print 'OK - the disk (from a to k),all is OK,',time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) sys.exit(STATE_OK) except ValueError: print "UNKNOWN" sys.exit(STATE_UNKNOWN) foo()
个人备忘,欢迎阅读