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

我有一个程序,我正在尝试创建一个程序,目的是在网络上搜索特定的 mac 地址。


当我运行 cisco 命令“show mac-address-table”时,它会给出保存到 MH2 的输出。如果该输出具有“000c”。在其中,所有输出都保存到一个 txt 文件中,我希望我能够根据使用的命令(显示 MAC 地址表与显示 MAC 地址表)过滤并从中提取 VLAN带有mac地址的行的vlan位置可以在左边或右边。我打算稍后弄清楚那部分,但现在我的脚本似乎没有读取文件(它正在获得正确的输出并且其中有一个“000c”条目)我将输入代码以下:


#!/usr/bin/env python3


from time import sleep

import telnetlib

from 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)" 是我认为我遇到问题的代码部分。任何帮助表示赞赏!


FFIVE
浏览 135回答 2
2回答

有只小跳蛙

所以下面是到目前为止对我有用的东西,我可以运行命令“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

交互式爱情

不太确定您要实现的目标,但检查OP1 = mactable.read读取的行是一个应该写成的函数OP1 = mactable.read()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python