parent
9902696f1f
commit
bd549b0cc9
@ -1,33 +1,26 @@
|
||||
import os
|
||||
import subprocess
|
||||
import random
|
||||
import plugins
|
||||
|
||||
|
||||
PING_DEFAULTS = {
|
||||
'hosts': list(), 'title': 'PING', 'timeout': 150
|
||||
'hosts': tuple(), 'title': 'PING', 'timeout': 150
|
||||
}
|
||||
|
||||
|
||||
class PluginThread(plugins.PluginThreadCommon):
|
||||
def __init__(self, config):
|
||||
super(PluginThread, self).__init__(config, PING_DEFAULTS)
|
||||
self.format_status('n/a')
|
||||
|
||||
def format_status(self, state):
|
||||
self.status['full_text'] = self.conf['title'] + ': ' + state
|
||||
if state == 'up':
|
||||
self.status['urgent'] = False
|
||||
self.hide = True
|
||||
else:
|
||||
self.status['urgent'] = True
|
||||
self.ping_cmd = ('fping', '-c1', '-qt' + str(self.conf['timeout']))
|
||||
|
||||
def main(self):
|
||||
random.shuffle(self.conf['hosts'])
|
||||
for host in self.conf['hosts']:
|
||||
fping = 'fping -qc1t' + str(self.conf['timeout'])\
|
||||
+ ' ' + host + ' &>/dev/null'
|
||||
response = os.system(fping)
|
||||
if response == 0:
|
||||
self.format_status('on')
|
||||
break
|
||||
self.format_status('down')
|
||||
host = random.choice(self.conf['hosts'])
|
||||
fping = subprocess.run(
|
||||
(*self.ping_cmd, host),
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||
)
|
||||
if fping.returncode == 0:
|
||||
self.format_status('up')
|
||||
else:
|
||||
self.format_status('down', urgent=True)
|
||||
|
Loading…
Reference in new issue