import urllib.request import json import urllib.parse import time base_url = "http://192.168.100.33:9000/api" data = json.dumps({"Username":"bestof","Password":"2L2u519wportainer"}).encode('utf-8') req = urllib.request.Request(f"{base_url}/auth", data=data, headers={'Content-Type': 'application/json'}) token = json.loads(urllib.request.urlopen(req).read().decode())['jwt'] req = urllib.request.Request(f"{base_url}/endpoints", headers={'Authorization': f'Bearer {token}'}) endpoint_id = json.loads(urllib.request.urlopen(req).read().decode())[0]['Id'] req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/json?all=1", headers={'Authorization': f'Bearer {token}'}) containers = json.loads(urllib.request.urlopen(req).read().decode()) container_id = None for c in containers: if "/context-hub" in c.get('Names', []): container_id = c['Id'] break if not container_id: print("context-hub container not found") exit(1) # Create exec instance exec_data = { "AttachStdin": False, "AttachStdout": True, "AttachStderr": True, "Tty": False, "Cmd": ["cp", "/app/data/admin.py", "/app/app/routes/admin.py"] } req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/{container_id}/exec", method="POST", data=json.dumps(exec_data).encode('utf-8'), headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}) exec_res = json.loads(urllib.request.urlopen(req).read().decode()) exec_id = exec_res['Id'] # Start exec instance start_data = {"Detach": False, "Tty": False} req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/exec/{exec_id}/start", method="POST", data=json.dumps(start_data).encode('utf-8'), headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}) out = urllib.request.urlopen(req).read() print("Exec output:", out) # Restart container req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/{container_id}/restart", method="POST", headers={'Authorization': f'Bearer {token}'}) urllib.request.urlopen(req) print("Restarted container.")