简单高效的端口扫描python脚本

欢迎python爱好者加入:学习交流群 667279387

最近为了获取虚拟机端口开放情况,写了一个简单脚本来查看。共享给大家。下面的代码在python2种测试通过

说明:concurrent是python 3.2 引入的一个库,在python2中使用需要手动安装一下: pip install futures

from concurrent import futures
import socket
import threading
import time

socket.setdefaulttimeout(3)

def scan_port(ip, PORT):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result=s.connect_ex((ip,PORT))
        if(result==0):
            print ip,":",PORT,"OPEN"
        s.close()
    except:
        print "scan exception!"

if __name__== "__main__":
    ip = "127.0.0.1"
    t = time.time()
    with futures.ThreadPoolExecutor(max_workers=100) as executor:
         future_to_port = {executor.submit(scan_port, ip, port): port for port in range(65535)}
         for future in futures.as_completed(future_to_port):
            future.result()
    total_time = time.time() - t
    print "total time:%f" % total_time
~
root@CentOS:~# python scan.py 
127.0.0.1 : 22 OPEN
127.0.0.1 : 80 OPEN
127.0.0.1 : 443 OPEN
127.0.0.1 : 3306 OPEN
127.0.0.1 : 4200 OPEN
127.0.0.1 : 8001 OPEN
total time:20.943239

欢迎python爱好者加入:学习交流群 667279387

猜你喜欢

转载自blog.csdn.net/hjxzb/article/details/78552027