How to check if a network port is open on linux?

前端 未结 12 1031
半阙折子戏
半阙折子戏 2020-12-07 11:07

How can I know if a certain port is open/closed on linux ubuntu, not a remote system, using python? How can I list these open ports in python?

  • Netstat: Is th
12条回答
  •  无人及你
    2020-12-07 11:36

    Please check Michael answer and vote for it. It is the right way to check open ports. Netstat and other tools are not any use if you are developing services or daemons. For instance, I am crating modbus TCP server and client services for an industrial network. The services can listen to any port, but the question is whether that port is open? The program is going to be used in different places, and I cannot check them all manually, so this is what I did:

    from contextlib import closing
    import socket
    class example:
        def __init__():
    
           self.machine_ip = socket.gethostbyname(socket.gethostname())
           self.ready:bool = self.check_socket()
    
        def check_socket(self)->bool:
            result:bool = True
            with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
            modbus_tcp_port:int = 502
            if not sock.connect_ex((self.machine_ip, modbus_tcp_port)) == 0:
                result = False
            return result
    

提交回复
热议问题