• 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()
    

      

  • 相关阅读:
    Regexp:教程
    Regexp:目录
    笔记-C#:C# 方法、属性杂项-01
    Regexp:正则表达式应用——实例应用
    正则表达式:百科
    Regexp:template
    AngularJS:参考手册
    命令目录
    java实现连续数的公倍数
    java实现连续数的公倍数
  • 原文地址:https://www.cnblogs.com/zhangjianghua/p/8920517.html
Copyright © 2020-2023  润新知