近期用来科学上网的VPS连续被封端口,多次莫名其妙上不了Google后催生了想法。

Python检测端口连通脚本

如何检测端口状态

  • 在命令行检测一个端口的状态可以使用curl指令,虽然无法直接返回端口的连通状态,但是可以根据返回的代码来确定端口是否被封锁
  • 如果端口未开放,curl会输出代码7,并且提示连接失败;如果端口开放但是不返回curl的请求,curl会输出代码52,并提示主机没有回复;如果端口被封,会返回代码28(设置超时时间后)。所以可以根据返回代码是否为“52”来判断端口状态。

如何在python执行命令

  • python3后取消了commands模块,取而代之的是subprocess。而subprocess执行系统命令的方法也有很多,这里选择subprocess.call()方法。
  • call()支持以字符串或者序列的方式传入指令,如果指令有额外参数,则需要传入一个序列
  • 对于curl指令,需要建立一个四个元素的序列——“curl“、”–connect-timeout“参数、”[超时时间]“和”[IP地址]:[Port]“

代码实现

Continue reading “Python检测服务器端口状态+ServerChan推送”