kcg_remote_server.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import socket
  2. import time
  3. import subprocess
  4. import argparse as ap
  5. class RemoteListener(object):
  6. def __init__(self, host, port):
  7. super(RemoteListener, self).__init__()
  8. self.status = True
  9. self.host = host
  10. self.port = port
  11. self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12. self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  13. self.soc.bind((self.host, self.port))
  14. self.soc.listen(0)
  15. self.soc.settimeout(None)
  16. def evaluate(self, command):
  17. return subprocess.check_output(eval(command))
  18. def listen(self):
  19. # conn, addr = soc.accept()
  20. while self.status:
  21. try:
  22. conn, addr = self.soc.accept()
  23. command = conn.recv(1024)
  24. if not command: continue
  25. print command
  26. ret = self.evaluate(command)
  27. print ret, str(len(ret))
  28. conn.send(str(len(ret)).zfill(100))
  29. conn.sendall(ret)
  30. conn.close()
  31. except socket.error: # Go on even in case of exception
  32. print 'error'
  33. conn.close()
  34. if __name__ == '__main__':
  35. parser = ap.ArgumentParser()
  36. parser.add_argument('--host', '-H', type=str, required=True)
  37. parser.add_argument('--port', '-p', type=int, required=True)
  38. args = parser.parse_args()
  39. rl = RemoteListener(args.host, args.port)
  40. rl.listen()