python获取系统下打开的端口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python获取系统下打开的端口相关的知识,希望对你有一定的参考价值。

想利用python往向局域网内所有机器发送一个包,不管对方机器开没开机,通通发送特定的包,用的是UDP发送,有几个问题想请教下
发送之前,需要打开一个端口,随即生成一个端口号,但要避免与本地端口已经打开的端口号相同,那么怎么获取系统下当前端口打开了呢?我知道Linux/windows都有特定的命令,但python可以用os.netstat -n这样的方式去获取列表,然后再处理吗?这样我觉得好蠢的方式,而且还不知道OS模块有没有这个方法。。。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(Var_list, ('255, 255, 255, 0', port))
但这里有个问题,发送的数据时list类型,有几十个元素,每个元素是一位(byte),但我希望发送出去的数据时连着的,比如列表是这样的
Var_list = [0b0001,0b0011,0b1101.....]
我希望发送出去的是这样的数据
000100111101.....
我这样做可以吗?因为现在手上暂时没机器实验,请教下大家这样做可不可以

第一个问题没啥,用0作为端口那么就会选择本地没有使用的端口。
第二个要么用python序列化的方法,只要对端用反序列化解释就可以。要么用自定义的,借助于struct的pack/unpack,或者如果跟c通讯,用ctypes定义结构体也可以。看你需要了
参考技术A 1.使用0作为端口输入即可
2.使用python的pack模块

如何关闭Mysql打开的3306端口防止系统被入侵

Mysql会自动开启3306端口用于远程连接mysql服务. 3306端口就是MySQL的默认端口, 但是黑客可以通过它来攻击你的主机系统. 服务器默认MySQL端口是3306, 最近经常被扫描, 甚至扫描到网站很慢或者打不开. 如果不需要远程数据库连接就可以让Mysql关闭3306端口, 既提高了访问速度, 又提高了安全性. 避免远程连接mysql数据库. 本地程序可以通过mysql.sock来连接, 不影响使用.
SSH到主机上输入下面的命令:
vi /etc/my.cnf
在[mysqld]下添加:
skip-networking
最后重启Mysql
service mysqld restart
检查Mysql是否正常运行
service mysqld status
参考技术A 进入控制面板,切换到图标显示(方便寻找)进入“管理工具”中,双击打开“服务”,找到mysql禁用就好了 参考技术B Mysql会自动开启3306端口用于远程连接mysql服务. 3306端口就是MySQL的默认端口, 但是黑客可以通过它来攻击你的主机系统. 服务器默认MySQL端口是3306, 最近经常被扫描, 甚至扫描到网站很慢或者打不开. 如果不需要远程数据库连接就可以让Mysql关闭3306端口, 既提高了访问速度, 又提高了安全性. 避免远程连接mysql数据库. 本地程序可以通过mysql.sock来连接, 不影响使用.
SSH到主机上输入下面的命令:
vi /etc/my.cnf
在[mysqld]下添加:
skip-networking
最后重启Mysql
service mysqld restart
检查Mysql是否正常运行
service mysqld status

以上是关于python获取系统下打开的端口的主要内容,如果未能解决你的问题,请参考以下文章

如何检查网络端口是不是打开?

如何关闭Mysql打开的3306端口防止系统被入侵

在LINUX下怎么查看哪些端口打开和关闭?

怎么打开网络端口?

linux下怎么开启80端口

如何打开8080端口