Python进行交换机信息抓取

需求:登录交换机下指令对回传信息进行抓取写入 CSV文件

#encoding=utf-8

import telnetlib
import re
import datetime,os


def do_telnet(HOST,USERNAME,PASSWORD):
    tn = telnetlib.Telnet(HOST, port=23, timeout=10)
    tn.set_debuglevel(2)
    tn.read_until('Username:')
    tn.write(USERNAME+'\n')

    tn.read_until('Password:')
    tn.write(PASSWORD+'\n')
    tn.read_until("F3-3850-TEST>")
    tn.write('enable'+'\n')
    tn.read_until('Password:')
    tn.write(PASSWORD+'\n')
    tn.read_until("F3-3850-TEST#")
    global msg
    msg = ''

    space_time = 0
    for i in range(3, 13):
        tn.write("show ip arp vlan %d" %i + '\n')
        while space_time <= 5:
            tn.write(' ')
            space_time = space_time+1
        space_time = 0
        tn.write('\n')

    tn.write("quit\n")
    msg = tn.read_until("F3-3850-TEST#quit\n")

    



def deal_and_uplog():
    #path1 = '\\\\172.24.255.126\\log\\STATIONINFO\\MP\\11\\11\\ON_LINE\\PASS\\%s\\IPINFO %s.csv'%(datatime.datetime.now().strftime('Y%m%d'),datatime.datetime.now().strftime('Y%m%d%H%I%M%S'))
    path1= '\\\\172.24.255.126\\log\\IPINFO'
    
    try:
        os.makedirs(path1)
    except:
        pass
    path = '%s\\IPINFO_%s.csv'%(path1,datetime.datetime.now().strftime('%Y%m%d_%H%M%S'))
    road = path
    with open(path,'w') as f:
        patt1 = "Protocol,Address,Age (min),Hardware Addr,Type,Interface\n"
        f.write(patt1)
    patt = r'(\w+)\s+(\d+\.\d+\.\d+\.\d+)\s+(\d+)\s+([a-z0-9]*\.[a-z0-9]*\.[a-z0-9]*)\s+([A-Z]*)\s+(.+)'
    with open(path, 'a+') as f:
        m = re.findall(patt,msg)
        if m is not None:
            for i in m:
                patt2 = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + i[4] + ',' + i[5]
                f.write(patt2)




if __name__ == "__main__":
    HOST = "192.168.xxx.xxx"
    USERNAME = 'xxx'
    PASSWORD = 'xxx'

    do_telnet(HOST,USERNAME,PASSWORD)
    deal_and_uplog()

 

使用Python Telnet抓取交换机PON口流量通常涉及以下步骤: 1. **安装Python Telnet库**:首先,需要在Python环境中安装Telnet库,如`telnetlib`,它是Python的标准库,无需额外安装。 2. **连接到交换机**:使用Telnet库建立与交换机的连接。这通常需要知道交换机的IP地址、Telnet端口(默认是23),以及登录凭证(用户名和密码)。 3. **登录认证**:通过Telnet连接后,需要按照交换机的要求进行登录认证。 4. **发送命令**:认证成功后,可以通过发送特定的命令来获取PON口流量信息交换机通常支持一些特定的命令来显示端口状态和流量统计信息。 5. **获取和处理数据**:获取命令的输出结果,可能需要进行字符串处理或解析,以提取出PON口的流量数据。 6. **断开连接**:操作完成后,应当关闭Telnet连接,释放资源。 下面是一个使用Python telnetlib进行Telnet操作的基本代码示例(请注意,实际使用时,需要根据具体的交换机命令进行调整): ```python import telnetlib # 连接到交换机 tn = telnetlib.Telnet('交换机IP地址', port) # 登录用户名和密码 tn.read_until(b"Username: ") tn.write(b"username\n") # 替换为实际用户名 tn.read_until(b"Password: ") tn.write(b"password\n") # 替换为实际密码 # 发送获取PON口流量信息的命令 tn.write(b"show pon port status\n") # 替换为实际命令 # 获取命令输出 output = tn.read_until(b"#").decode('ascii') # 关闭连接 tn.close() # 输出结果中提取PON口流量信息(需要根据实际输出进行解析) print(output) ``` **注意**:由于不同品牌和型号的交换机可能有不同的命令语法和输出格式,所以上述代码只是一个通用的框架,实际使用时需要根据交换机的具体命令和输出进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值