Python实现Windows端口监听程序python操作windows

1、安装库

pip install tabulate

2、代码实现

!/usr/bin/env python -*- coding: utf-8 -*- “””Windows端口监听程序显示本机处于监听情形的端口,进程ID和程序名称””” import subprocessimport reimport osimport sysfrom tabulate import tabulate def get_listening_ports(): “”” 获取所有处于监听情形的端口信息 返回包含端口、PID和程序名称的列表 “”” try: 使用netstat命令获取所有TCP监听端口 netstat_output = subprocess.check_output( ‘netstat -ano -p tcp | findstr “LISTENING”‘, shell=True, text=True ) 解析netstat输出 port_info = [] for line in netstat_output.splitlines(): 清理并分割行 parts = re.split(r’s+’, line.strip()) if len(parts) >= 5: 提取本地地址和PID local_address = parts[1] pid = parts[4] 从本地地址中提取端口 if ‘:’ in local_address: port = local_address.split(‘:’)[-1] 获取进程名称 try: process_info = subprocess.check_output( f’tasklist /fi “PID eq pid}” /fo csv /nh’, shell=True, text=True ) 解析进程信息 if process_info and ‘”,”‘ in process_info: process_name = process_info.split(‘”,”‘)[0].strip(‘”‘) port_info.append( ‘port’: port, ‘pid’: pid, ‘program’: process_name }) except subprocess.SubprocessError: port_info.append( ‘port’: port, ‘pid’: pid, ‘program’: ‘Unknown’ }) return port_info except subprocess.SubprocessError as e: print(f”获取端口信息时出错: e}”) return [] def display_port_info(port_info): “”” 以表格形式显示端口信息 “”” if not port_info: print(“未找到监听中的端口”) return 准备表格数据 table_data = [] for info in port_info: table_data.append([ info[‘port’], info[‘pid’], info[‘program’] ]) 按端口号排序 table_data.sort(key=lambda x: int(x[0]) if x[0].isdigit() else float(‘inf’)) 显示表格 headers = [“端口”, “进程ID”, “程序名称”] print(tabulate(table_data, headers=headers, tablefmt=”grid”)) def main(): “”” 主函数 “”” print(“正在获取本机监听端口信息…n”) port_info = get_listening_ports() display_port_info(port_info) if __name__ == “__main__”: try: main() except KeyboardInterrupt: print(“n程序被用户中断”) except Exception as e: print(f”程序执行出错: e}”) sys.exit(1)

3、效果如下

4、聪明延展

python监听端口并重启服务脚本

通过python运行体系命令,netstat -aon|findstr 端口号,查看端口是否占用,如果占用着,说明服务没挂,不做处理,sleep设置的时刻,接着再重新运行查看端口占用命令;如果没占用,说明服务挂了,重新运行启动脚本,xxxx.bat,启动服务。

依赖包:

  • os(windows命令)
  • time(定时)

代码:

根据端口自动重启脚本~ import osimport timeport = input(“n>>>请输入端口: n”) C:/Users/syp1293/Desktop/configfile/center.batbat_path = input(“n>>>请输入bat文件路径: n”)time_u = input(“n>>>请输入间隔时刻: n”)while True: with os.popen(‘netstat -aon|findstr “‘ + port + ‘”‘) as res: res = res.read().split(‘n’) result = [] if res[0] == ”: 不存在端口占用,启动服务 os.system(‘start ‘ + bat_path) time.sleep(120) continue else: for line in res: print(line) temp = [i for i in line.split(‘ ‘) if i != ”] if len(temp) > 4: result.append(‘pid’: temp[4], ‘address’: temp[1], ‘state’: temp[3]}) print(‘PID:’, temp[4]) print(‘sleeping…’) time.sleep(int(time_u))

生成exe文件,并且启动后显示为命令行。

pyinstaller -F osport.py

Python socket端口监听

实现代码

import structimport socketimport timeimport multiprocessing as mpSERVER_IP = “192.168.1.33”PORT_BASE = 30000import osdef recvall(conn, n): Helper function to recv n bytes or return None if EOF is hit data = b” while len(data) < n: packet = conn.recv(n – len(data)) if not packet: print(“hahahah”,”come here”) break data += packet print(len(data)) print(“result ======”,len(data)) return data def recv_data(conn): result = result.decode(“utf8″) data = b” counts = 0 while True: packet = conn.recv(1024) counts += len(packet) if not packet: break data += packet print(“++++++++++++++++”,len(data),counts) return data def listen_client(port): server_port = PORT_BASE + port try its best to listen to bind the ports to receive data while True: try: recv_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) recv_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) recv_socket.bind((SERVER_IP,port)) print(” listening “,SERVER_IP,port) recv_socket.listen() break except Exception as e: print(“bind port fails “, e, SERVER_IP) os.system(‘fuser -k -n tcp ‘ + str(port)) time.sleep(3) while True: try: conn, client_addr = recv_socket.accept() recv_data(conn) except Exception as e: print(e) for i in range(6): print(“================”,PORT_BASE + 2 * i) mp.Process(target=listen_client, args=(PORT_BASE + 2 * i,)).start()

到此这篇关于Python实现Windows端口监听程序的文章就介绍到这了,更多相关Python端口监听内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

无论兄弟们可能感兴趣的文章:

  • python实现数通设备端口监控示例
  • Python实现数通设备端口使用情况监控实例
  • python监控nginx端口和进程情形
  • Python 通过监听端口实现唯一脚本运行方式
  • Python脚本实现定时监控端口
  • 使用Python实现IP地址和端口情形检测与监控
版权声明