#!/usr/bin/env python from pathlib import Path import subprocess import sys import yaml def check_ping_reachable(ip): try: subprocess.check_call(['ping', '-c2', '-W1', ip], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) return True except subprocess.CalledProcessError: return False def check_service_active(service): try: subprocess.check_call(['systemctl', 'status', service], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) return True except subprocess.CalledProcessError: return False def main(): config = yaml.load( open(Path('~/.config/i3-vpn.json').expanduser()), Loader=yaml.SafeLoader, ) results = [config['prefix']] for check in config['checks']: if check_ping_reachable(check['ip']): check['color'] = config['colors']['success'] else: check['color'] = config['colors']['failure'] results.append(config['template'].format(**check)) print(' '.join(results)) if __name__ == '__main__': sys.exit(main())