Python利用psutil根据服务名获取端口号及Linux端口管理
本文介绍如何使用Python的psutil库根据服务名称查找进程ID(PID),进而通过netstat命令获取该服务占用的端口号。同时补充Linux系统中查看、开启及关闭端口的常用iptables和netstat命令,帮助开发者快速定位网络服务状态。
Python根据服务名获取端口号的方法
根据服务名获取端口号
首先需要安装并导入psutil库,该库提供了获取系统进程信息的接口。
接着,利用psutil遍历所有进程,通过正则表达式匹配服务名称,从而找到对应的进程标识符(PID)。
获取到PID后,结合系统命令netstat筛选该进程的网络连接信息,即可提取出服务监听的端口号。
# -*- encoding=utf8 -*-
import psutil
import re## 标题
import os
def processinfo(x):
'''根据服务名找到PID'''
procs = list(psutil.process_iter()) # 获取所有服务列表
print(procs)
for r in procs:
aa = str(r)
f = re.compile(x,re.I)
if f.search(aa):
print (aa.split('pid=')[1].split(',')[0])
return aa.split('pid=')[1].split(',')[0]
# print (aa.split('pid='))
def port(x):
'''通过pid获取端口号'''
PID = processinfo(x)
cmd = 'netstat -ano | findstr' + ' '+str(PID)
print(cmd)
a = os.popen(cmd)
# 此时打开的a是一个对象,如果直接打印的话是对象内存地址
text = a.read()
# 要用read()方法读取后才是文本对象
first_line = text.split(':')
ab = first_line[1]
cd = ab.split(' ')
por = cd[0]
print(por)
return por
Linux端口管理与配置命令
知识点扩展:Linux环境下查看及配置端口开启状态的方法。
一、查看当前哪些端口处于打开或监听状态,可使用命令 netstat -anp。
二、关闭特定端口,可通过规则 iptables -A INPUT -p tcp --drop 配合 j DROP 动作来实现丢弃数据包。
iptables -A OUTPUT -p tcp --dport 端口号-j DROP
三、开启端口,执行命令:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT。
四、以下是Linux中管理端口命令的具体使用方法说明。
nc -lp 23 &(打开23端口,即telnet)
netstat -an | grep 23 (查看是否打开23端口)
五、需要注意的是,Linux中每一个打开的端口,都必须有相应的监听程序在后台运行才能生效。
总结
以上所述是小编给大家介绍的Python根据服务获取端口号的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













