为了账号安全,请及时绑定邮箱和手机立即绑定

Telnetlib 输出到文本文件中,稍后作为变量调用

Telnetlib 输出到文本文件中,稍后作为变量调用

FFIVE 2022-06-28 17:45:04
我有一个程序,我正在尝试创建一个程序,目的是在网络上搜索特定的 mac 地址。当我运行 cisco 命令“show mac-address-table”时,它会给出保存到 MH2 的输出。如果该输出具有“000c”。在其中,所有输出都保存到一个 txt 文件中,我希望我能够根据使用的命令(显示 MAC 地址表与显示 MAC 地址表)过滤并从中提取 VLAN带有mac地址的行的vlan位置可以在左边或右边。我打算稍后弄清楚那部分,但现在我的脚本似乎没有读取文件(它正在获得正确的输出并且其中有一个“000c”条目)我将输入代码以下:#!/usr/bin/env python3from time import sleepimport telnetlibfrom getpass import getpass# f is the .txt document that lists the IP's we'll be using.f = open("devicess.txt")#username = input("please provide your username:")password = getpass()#for line in f:    device = (line)    print('Starting to collect information, please wait')#For those devices in the above list, connect and run the below commands    def loopstart():        for device in f:            tn = telnetlib.Telnet()            tn.open(device, 23, 20)            #Remove # in the line below for debug            #tn.set_debuglevel(2000)            tn.read_until(b"Username:", timeout = 20)            sleep(.25)            tn.write(str(username + "\n").encode("ascii"))            sleep(.25)            tn.read_until(b"Password: ", timeout = 10)            sleep(.25)            tn.write((password + "\n").encode("ascii"))            sleep(.25)            #####################################            #Verify Login attempt below         #            #####################################            try:                enablemode = tn.read_until(b"#")                if (b"FAIL") in enablemode:                    print("Bad credentials to " + device)                    tn.close()                    sleep(.5)"if ("000c.15") in (CPMAC)" 是我认为我遇到问题的代码部分。任何帮助表示赞赏!
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

所以下面是到目前为止对我有用的东西,我可以运行命令“show mac address-table”,获取该输出并将其放入文本文件中,逐行搜索 000c.15 的输出并在以后使用该行进行进一步输出。我认为重要的是在将输出(字节)写入文本文件之前将其解码为字符串。此外,使用 seek(0) 函数有助于在开始阅读之前将我带回到 txt 文件的开头。Line.strip 似乎摆脱了所有被解释为线条的空白。不是 100% 确定最后一个。在获取该代码以发送命令方面仍然存在问题,但我至少正在取得进展。感谢大家的帮助。


if (b"000c.15") in MH2:

    print("000c.15 in MH2, line 57")

    try:

        print ("line 59")

        sleep(.5)

        mactable = open("mactable.txt", "w+")

        mactable.seek(0)

        mactable.write(MH2.decode('utf-8'))

        mactable.truncate()

        mactable.seek(0)

        OP1 = mactable.readlines()

            for line in OP1:

            line = line.strip()

            CPMAC = line


查看完整回答
反对 回复 2022-06-28
?
交互式爱情

TA贡献1712条经验 获得超3个赞

不太确定您要实现的目标,但检查OP1 = mactable.read读取的行是一个应该写成的函数OP1 = mactable.read()



查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信