Advertisement
Guest User

Untitled

a guest
Nov 6th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import time
  3. import logging
  4. import platform
  5. import socket
  6. import subprocess
  7. from logging.handlers import TimedRotatingFileHandler
  8.  
  9. LOG_FILENAME = '/home/john/wolkodi.log'
  10. UDP_PORT = 1222
  11.  
  12. def config_log(log_filename):
  13.     logger = logging.getLogger(__name__)
  14.     logger.setLevel(logging.INFO)
  15.     handler = TimedRotatingFileHandler(log_filename, when="d", interval=30, backupCount=5)
  16.     handler.setLevel(logging.INFO)
  17.     formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  18.     handler.setFormatter(formatter)
  19.     logger.addHandler(handler)
  20.     return logger
  21.  
  22.  
  23. def main():
  24.     logger.info("I'm binding to port " + str(UDP_PORT));
  25.     try:
  26.         sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  27.     except Exception as exc:
  28.         print("Couldn't make the socket: {0}".format(exc));
  29.     try:
  30.         sock.bind(("0.0.0.0", UDP_PORT))
  31.     except:
  32.         print("Couldn't bind to the port.");
  33.     while True:
  34.         data, addr = sock.recvfrom(512) # buffer size is 512 bytes
  35.         logger.info("UDP package from IP '%s'", addr[0])
  36.         sock.recv(1024*128)
  37.         distro, version,_ = platform.linux_distribution()
  38.         logger.info("I'm a " + distro.lower() + " distribution.");
  39.         print(distro.lower());
  40.         if distro.lower() == 'arch':
  41.             p = subprocess.Popen(["systemctl", "--user", "status", "kodi"],
  42.                     stdout=subprocess.PIPE,universal_newline=True)
  43.             out, err = p.communicate()
  44.  
  45.             if "Active: active (running)" in out:
  46.                 logger.info("kodi is already running. Nothing to do")
  47.             else:
  48.                 logger.info("Starting kodi (Arch)...")
  49.                 subprocess.Popen(['systemctl','start','kodi'])
  50.                 logger.info("kodi has been started :-)")
  51.  
  52.         elif distro.lower() == 'debian' or distro.lower() == 'ubuntu':
  53.             logger.info("I'm a debian-based OS.");
  54.             p = subprocess.Popen(["ps", "aux"],
  55.                     stdout=subprocess.PIPE,universal_newlines=True)
  56.             out, err = p.communicate()
  57.             if "kodi.bin" in out:
  58.                 logger.info("kodi is already running. Nothing to do")
  59.             else:
  60.                 logger.info("Starting kodi (Debian)...")
  61.                 with subprocess.Popen(["/usr/local/bin/kodi"],
  62.                         stdout=subprocess.PIPE) as p:
  63.                     logger.info(p.pid);
  64.                 logger.info("kodi has been started :-)")
  65.  
  66.  
  67. if __name__ == "__main__":
  68.     try:
  69.         logger = config_log(LOG_FILENAME)
  70.         main()
  71.     except Exception as e:
  72.         logger.error(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement