timmy ha revisionato questo gist 10 months ago. Vai alla revisione
Nessuna modifica
timmy ha revisionato questo gist 10 months ago. Vai alla revisione
Nessuna modifica
timmy ha revisionato questo gist 10 months ago. Vai alla revisione
Nessuna modifica
timmy ha revisionato questo gist 10 months ago. Vai alla revisione
1 file changed, 30 insertions
websocket_command_executor.py(file creato)
| @@ -0,0 +1,30 @@ | |||
| 1 | + | import asyncio | |
| 2 | + | import websockets | |
| 3 | + | import subprocess | |
| 4 | + | ||
| 5 | + | async def handle_command(websocket, path): | |
| 6 | + | try: | |
| 7 | + | async for message in websocket: | |
| 8 | + | print(f"Received command: {message}") | |
| 9 | + | ||
| 10 | + | # 執行系統指令 | |
| 11 | + | try: | |
| 12 | + | result = subprocess.check_output(message, shell=True, stderr=subprocess.STDOUT, text=True) | |
| 13 | + | except subprocess.CalledProcessError as e: | |
| 14 | + | result = f"Error executing command:\n{e.output}" | |
| 15 | + | ||
| 16 | + | # 回傳執行結果 | |
| 17 | + | await websocket.send(result) | |
| 18 | + | except websockets.exceptions.ConnectionClosed: | |
| 19 | + | print("Connection closed") | |
| 20 | + | except Exception as e: | |
| 21 | + | print(f"Unexpected error: {e}") | |
| 22 | + | ||
| 23 | + | # 啟動 WebSocket Server | |
| 24 | + | async def main(): | |
| 25 | + | server = await websockets.serve(handle_command, "0.0.0.0", 8765) | |
| 26 | + | print("WebSocket server started on ws://0.0.0.0:8765") | |
| 27 | + | await server.wait_closed() | |
| 28 | + | ||
| 29 | + | if __name__ == "__main__": | |
| 30 | + | asyncio.run(main()) | |
Più nuovi
Più vecchi