如何查看你连接的路由器的端口?

How to see the port of the router you are connected to?

我正在尝试制作一个 little/small python 脚本,它可以找出您所连接的路由器的端口。如果脚本找不到端口,它将执行 print(f"port {PORT} not found") 是否可以查看您连接的端口或更好的是路由器上打开的端口?

您可以使用socket模块尝试连接路由器的端口,完成后关闭套接字:

import socket
from contextlib import closing

host = '192.168.0.1'
port = 25
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
  if sock.connect_ex((host, port)) == 0:
    print("Port is open")
  else:
    print("Port is not open")

这里测试25端口(仅以SMTP为例),可以循环1到65536的范围,转函数:

import socket
from contextlib import closing

def check_socket(host, port):
    with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
      if sock.connect_ex((host, port)) == 0:
        return True
      else:
        return False

if check_socket('192.168.0.1',25):
  print('Port open')
else:
  print('Port closed')