123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import socket
- import time
- import subprocess
- import argparse as ap
- class RemoteListener(object):
- def __init__(self, host, port):
- super(RemoteListener, self).__init__()
- self.status = True
- self.host = host
- self.port = port
- self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.soc.bind((self.host, self.port))
- self.soc.listen(0)
- self.soc.settimeout(None)
- def evaluate(self, command):
- return subprocess.check_output(eval(command))
- def listen(self):
- # conn, addr = soc.accept()
- while self.status:
- try:
- conn, addr = self.soc.accept()
- command = conn.recv(1024)
- if not command: continue
- print command
- ret = self.evaluate(command)
- print ret, str(len(ret))
- conn.send(str(len(ret)).zfill(100))
- conn.sendall(ret)
- conn.close()
- except socket.error: # Go on even in case of exception
- print 'error'
- conn.close()
- if __name__ == '__main__':
- parser = ap.ArgumentParser()
- parser.add_argument('--host', '-H', type=str, required=True)
- parser.add_argument('--port', '-p', type=int, required=True)
- args = parser.parse_args()
- rl = RemoteListener(args.host, args.port)
- rl.listen()
|