jiyuhang 2 ماه پیش
والد
کامیت
8eb4cb00f6

+ 9 - 0
app/algorithm/monitor/monitor_mnger.py

@@ -178,6 +178,15 @@ class MonitorManager:
             print(f"停止所有进程时发生错误: {e}")
             return False
 
+    def get_sys_procs(self):
+        """获取系统所有进程"""
+        sys_procs = []
+        try:
+            for proc in psutil.process_iter(['username', 'pid', 'name', 'status', 'create_time']):
+                sys_procs.append(proc.info)
+        except Exception as e:
+            print(f"获取系统进程列表时发生错误: {e}")
+        return sys_procs
 
 # 创建监控管理器实例,在线监控
 monitor_manager = MonitorManager()

+ 3 - 2
app/algorithm/monitor/webskt_mnger.py

@@ -15,7 +15,8 @@ class WebMnger:
         self.server = None
         self.event_loop = None
         self.server_thread = None
-        self.host = "localhost"
+        # self.host = "localhost"
+        self.host =  "0.0.0.0"
         self.port = 8765
         # 记录主服务是否完全开启
         self.server_start_event = threading.Event()
@@ -77,7 +78,7 @@ class WebMnger:
         server_thread.start()
         if self.server_start_event.wait(timeout=5):
             if server_thread.is_alive():
-                print("WebSocket >>> 服务器已启动")
+                print(f"WebSocket >>> 服务器已启动, port:{self.port}")
                 self.server_thread = server_thread
                 return server_thread
             else:

+ 8 - 1
app/controllers/listenpy_controller.py

@@ -75,7 +75,14 @@ class ListenPyController:
         else:
             return jsonify({"status": "error", "message": "停止所有正在监听的进程失败"})
 
-
+    def get_system_process_list(self):
+        """
+        获取系统进程列表
+        """
+        process_list = listenpy_service.get_system_process_list()
+        if process_list:
+            return jsonify({"status": "success", "message": "获取系统进程列表成功,请查看[data]字段", "data": process_list})
+        return jsonify({"status": "error", "message": "获取系统进程列表失败"})
 
 
 # 单例

+ 9 - 1
app/routes/listenpy_route.py

@@ -6,7 +6,7 @@ listenpy_bp = Blueprint('listenpy', __name__, url_prefix='/listenpy')   # 监听
 def home():
     info = {
         "status": "success",
-        "message": "欢迎使用ListenPy,这是一个用于监听Python进程的API接口。接口说明:\n/start:监听某个python进程;\n/stop:停止监听某个python进程;\n/list:查看所有正在监听的python进程清单;\n/shutdown:停止所有监听。"
+        "message": "欢迎使用ListenPy,这是一个用于监听Python进程的API接口。接口说明:\n/start:监听某个python进程;\n/stop:停止监听某个python进程;\n/list:查看所有正在监听的python进程清单;\n/shutdown:停止所有监听;\n/sysproc:获取系统所有进程列表。"
     }
     return jsonify(info)
 # 启动监听某个pid进程
@@ -49,3 +49,11 @@ def stop_all_listened():
     停止所有监听
     """
     return listenpy_controller.stop_all_listened()
+
+# 查询系统所有进程列表
+@listenpy_bp.route('/sysproc', methods=['GET'])
+def get_sys_process_list():
+    """
+    查询系统所有进程列表
+    """
+    return listenpy_controller.get_system_process_list()

+ 4 - 0
app/services/listenpy_service.py

@@ -33,5 +33,9 @@ class ListenPyService:
         """清除所有进程的监控数据"""
         return monitor_manager.shutdown_all_monitoring()
 
+    def get_sys_proc_list(self):
+        """获取系统进程列表"""
+        return monitor_manager.get_sys_procs()
+
 # 单例
 listenpy_service = ListenPyService()

+ 3 - 18
tem.py

@@ -1,19 +1,4 @@
-import asyncio
+import psutil
 
-
-async def say_after(delay:int, what:str):
-    await asyncio.sleep(delay)
-    print(what)
-
-async def main():
-    result1 = asyncio.create_task(say_after(5, 'hello'))
-    result2 = asyncio.create_task(say_after(5, 'world'))
-    print("finished")
-    await result1
-    await result2
-    print("done")
-    print(result1)
-    print(result2)
-
-if __name__ == "__main__":
-    asyncio.run(main())
+for proc in psutil.process_iter(['username', 'pid', 'name', 'status', 'create_time']):
+    print(proc.info)

+ 1 - 1
websockets_client.py

@@ -2,7 +2,7 @@ import asyncio
 import websockets
 
 async def simple_client(link=0):
-    url = "ws://localhost:8765"
+    url = "ws://192.168.20.186:8765"
     try:
         async with websockets.connect(url) as websocket:
             print(f"{link}已连接到服务器")