Python批量扫描服务器指定端口状态

闲来无事用Python写了一个简陋的端口扫描脚本,其简单的逻辑如下:

1. python DetectHostPort.py iplist.txt(存放着需要扫描的IP地址列表的文本,每行一个地址)

2. 输入指定的扫描端口,扫描后完成后将生成日志文件。

 

源码如下:

#!/usr/bin/env python

import sys
import time
import socket


def getaddresslist(addr):
    """
    getaddresslist(addr) -> IP address file

    IP address read from the file.
    """
    try:
        with open(addr, "r") as ip_list:
            lines = ip_list.readlines()
            address = [line.strip() for line in lines]
        return address
    except (IOError, IndexError), e:
        return str(e)


def scan(ip_list, port):
    """
    scan() -> getaddresslist()

    getaddresslist() function returns the IP address of the list.
    """
    if not isinstance(ip_list, list):
        sys.exit("Function getaddresslist() return error message: %s" % ip_list)

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(1)
    f = open('E:\programming\public\python\scan.log', 'ab')
    for addr in ip_list:
        host = (addr, int(port))
        try:
            s.connect(host)
            f.write("Host %s:%s connection success. \n" % (host[0], host[1]))
        except Exception, e:
            f.write("Host %s:%s connection failure: %s. \n" % (host[0], host[1], e))
    f.close()
    s.close()
    return True


if __name__ == '__main__':

    addrs = sys.argv[1]
    isNone = True
    while isNone:
        scanport = raw_input("Enter the scan port: ")
        if scanport:
            isNone = False
        else:
            continue
    scan(getaddresslist(addrs), scanport)

运行时只能扫描一个端口,但是可以对代码进行修改,扩展为扫描多个端口。

转载于:https://www.cnblogs.com/XuHoo/p/5888528.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值