Python:检索当前机器上的套接字列表?

时间:2017-05-28 11:27:38

标签: python sockets

我是Python的新手(截至上周),我仍然掌握了基础知识,所以请原谅我所展示的任何无知。

作为我作业的一部分,我被要求制作一个基本的端口扫描仪,我必须包括的一个功能是检索当前机器上的插座列表。我一直在环顾四周,并设法拼凑了一段代码,允许我输入我想要扫描的机器的IP,但我想尝试制作它,以便它自动扫描它运行的任何一台机器。

    elif (userChoice == "4"):

    print("You selected " + userChoice)

    try:

        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # s will be equal to the command looking for the IPV4 addresses

    except socket.error:

        sys.exit("Failed to create socket.")  # error handling message to be printed to the console should a socket failed to be created

    print("Socket created")

    hostAddress = input("Please enter host address to scan - example 'www.server.com': ")
    print ("You entered " + hostAddress )

    try:
        remoteIP = socket.gethostbyname(hostAddress)

    except socket.gaierror:

            sys.exit("Hostname could not be resolved exiting")

            ret = input("Hit return to go back to the menu")

            continue

    print("IP address of " + hostAddress + ' is ' + remoteIP)

到目前为止,这是我的代码。如果有人能帮助我,或者告诉我,如果我朝着正确的方向前进,我将非常感激。

另外,如果我是一个菜鸟,如果有人有任何关于良好阅读材料的建议,以帮助我掌握基础知识,我将非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

检查远程服务器上的开放端口 -

# For input hostAddress
remoteIP = socket.gethostbyname(hostAddress)
for port in range(1,1025):  
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteIP, port))
        if result == 0:
            print("Port %s:  Open"%port)
        sock.close()

=> Port 80:   Open