Скрипт опроса состояния бесперебойников, в
upsc
2 бесперебойника, из каждого забираю 4 параметра.
Забираются они из команды, вывод такой:
root@router:/home/dmitry# upsc apcsmart 2>/dev/null
battery.charge: 100
battery.charge.low: 30
battery.charge.warning: 50
battery.runtime: 600
.... и тд
Решил сделать не правильно вот так:
import os
import subprocess
from twisted.internet import task, reactor
devices = subprocess.Popen(['upsc', '-l', '2>/dev/null'])
devices.wait()
timeout = 15.0
def doWork():
for ups in devices:
charge = [charge.append(grep 'battery.charge:'.split(' ')[-1])]
runtime = [runtime.append(grep 'battery.runtime:'.split(' ')[-1])]
voltage = [voltage.append(grep 'battery.voltage:'.split(' ')[-1])]
txt_status = [txt_status.append(grep 'ups.status:'.split(' ')[-1])]
status = 1 if [txt_status = 'OL' ] else status = 0; os.system("echo "+status+">> ~/tmp/ups.prom")
os.system("echo "+charge+">> ~/tmp/ups.prom")
os.system("echo "+runtime+">> ~/tmp/ups.prom")
os.system("echo "+voltage+">> ~/tmp/ups.prom")
pass
sup = task.loopingCall(doWork)
sup.start(timeout)
reactor.run()
Вопрос: можно ли....Как написать это лучше (красивее и тд), чтобы не было, например, повторений echo и записей в переменную по сто раз. Вдруг их станет не 4, а 10...?