学习python自动化运维的第十天

学习python自动化运维的第十天

今天做的是用python和nmap对服务器做端口扫描,用于及时检测非正常开启的高危端口。保障系统的安全。
先安装python的第三方库nmap

pip install nmap

之后对nmap进行测试,测试代码如下:

import nmap
nm = nmap.PortScanner()
result = nm.scan("192.168.186.152","80,22")
print(result)

之后出现报错,报错内容如下:
在这里插入图片描述
报错内容:nmap.nmap.PortScannerError: 'nmap program was not found in path.
之后在网上查找相关的错误代码得知,需要安装nmap扫描工具并在nmap的py文件中的PortScanner类下添加nmap的安装路径(指向nmap.exe),具体操作如下:
下载安装nmap,nmap的下载地址为:https://nmap.org/dist/nmap-7.92-setup.exe,其他版本去官网自己下载吧,下载安装nmap(安装过程中记住nmap的安装路径,我的路径为:D:/AppData/nmap)
在这里插入图片描述

安装之后在PortScanner类中添加安装路径,添加如下如下内容:D:/AppData/nmap/nmap
在这里插入图片描述
在这里插入图片描述
之后再进行测试,结果如下:
在这里插入图片描述
之后通过python第三方库nmap对服务器的端口进行扫描,并对返回的结果进行相关的整理。
完整代码如下:

import nmap
import sys
scan_row = []
# input_data = input("请输入IP地址和端口号:")
input_data = "192.168.186.152 22,80,3306,3310"
scan_row = input_data.split(" ")
if len(scan_row) != 2:
    print("请输入IP地址和端口号,例如:192.168.186.152 80,3306,22")
    sys.exit(0)
hosts = scan_row[0]
port = scan_row[1]
try:
    nm = nmap.PortScanner()
except nmap.PortScannerError:
    print("nmap 没有找到",sys.exc_info()[0])
    sys.exit(0)
except:
    print("Unexpected error",sys.exc_info()[0])
    sys.exit(0)
try:
    nm.scan(hosts=hosts,arguments="-v -sS -p " + port)
except Exception as e:
    print("扫描错误:",e)
for host in nm.all_hosts():
    print("-----------------------------------")
    print("Host: %s(%s)"%(host,nm[host].hostname()))
    print("State: %s"%nm[host].state())
    for proto in nm[host].all_protocols():
        print("----------------")
        print("Protocol: %s"%proto)
        lport = nm[host][proto].keys()
        for port in lport:
            print("port: %s\tstate: %s"%(port,nm[host][proto][port]["state"]))

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值