Python实现局域网活动主机扫描及日志记录

本文将介绍如何使用Python脚本,结合arp-scan工具,实现对局域网内活动主机的扫描,并将其IP地址和MAC地址记录到日志文件中,以便于进行网络分析和安全防护。

代码实现

import subprocess
import time
import logging

def scan_active_hosts():
    # 配置日志记录器
    logging.basicConfig(filename='active_hosts.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

    while True:
        # 使用arp-scan命令扫描局域网
        cmd = 'arp-scan --localnet | grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}''
        proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)

        # 获取扫描结果
        output = proc.stdout.read().decode('utf-8')

        # 将扫描结果记录到日志文件
        logging.info('扫描结果:\n' + output)

        # 设置扫描间隔时间
        time.sleep(5)

if __name__ == '__main__':
    scan_active_hosts()

代码说明

  1. 导入必要的库:

    • subprocess: 用于执行系统命令
    • time: 用于设置时间间隔
    • logging: 用于记录日志
  2. 配置日志记录器:

    • filename: 设置日志文件名
    • level: 设置日志级别
    • format: 设置日志格式
  3. 使用arp-scan命令扫描局域网:

    • arp-scan --localnet: 扫描本地网络
    • grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}': 过滤出IP地址
  4. 获取扫描结果:

    • proc.stdout.read().decode('utf-8'): 读取命令执行结果并解码
  5. 将扫描结果记录到日志文件:

    • logging.info(): 记录信息级别的日志
  6. 设置扫描间隔时间:

    • time.sleep(5): 每隔5秒扫描一次

总结

本文介绍了如何使用Python脚本结合arp-scan工具实现对局域网内活动主机的扫描并记录日志。该脚本可以帮助网络管理员及时了解网络中的活动设备,并为网络安全防护提供数据支持。请注意,在实际应用中,应根据具体需求调整扫描间隔时间和日志记录策略。


原文地址: https://www.cveoy.top/t/topic/jniX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录