Python попробуй и кроме бега - PullRequest
1 голос
/ 04 ноября 2019

Используйте приведенный ниже код, чтобы разрешить работу следующих команд, и они обе работают, однако при передаче аргумента, существующего в ACTIONS, он вызывает функцию, но по-прежнему запускает исключение.

miner.py  192.168.88.250 stats temp 1000 2000 
miner.py  192.168.88.250 summary

# Get FAN temnperature
def temp():
        WARN = int(sys.argv[4]) # WARN temp is argument 3 from command line 
        CRIT = int(sys.argv[5]) # CRIT temp is argument 4 from command line 
        temp = connect(sys.argv[2])
        fantemp1 = temp['STATS'][1]['fan1']
        fantemp2 = temp['STATS'][1]['fan2']
        fantemp3 = temp['STATS'][1]['fan3']
        print()
        if fantemp1 >= WARN and fantemp1 <= CRIT:
                status = "Fan1, is overheating"
                exitstatus = 1
        elif fantemp2 >= WARN and fantemp2 <= CRIT:
                status = "Fan2, is overheating"
                exitstatus = 1
        elif fantemp3 >= WARN and fantemp3 <= CRIT:
                status = "Fan3, is overheating"
                exitstatus = 1
        elif fantemp1 <= WARN and fantemp1 <= CRIT:
                status = "Fan1, is critical"
                exitstatus = 2
        elif fantemp2 <= WARN and fantemp2 <= CRIT:
                status = "Fan2, is critical"
                exitstatus = 2
        elif fantemp3 <= WARN and fantemp3 <= CRIT:
                status = "Fan3, is critical"
                exitstatus = 2
        else:
                status = "All is okay"
                exitstatus = 0

        #print(status)
        exit(exitstatus)


# For all commends
def all():
        all = connect(sys.argv[2])
        print(all)



try:
   cmd = sys.argv[5]
   actions = ['temp', 'stats', 'chips']
   # check if it's allowed
   if cmd in actions:
      # lookup the function by name in the globals() dictionary
      func = globals()[cmd]
      # call the function
      func()
except:
   all()   

Кажется, это работает нормально, но все равно было бы интересно узнать, почему попробуйте и за исключением того, что не работает.

if len(sys.argv) > 3:
    cmd = sys.argv[3]
    actions = ['temp', 'stats', 'chips']
    func = globals()[cmd]
      # call the function
    sys.exit(func())
   # check if it's allowed

else:
  all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...