python3記憶體快取 python 3 x

2021-10-11 20:40:33 字數 2529 閱讀 7679

我試圖通過telnet(使用控制台伺服器控制台)到cisco路由器,執行一些show命令,並將它們的輸出儲存在變數中。

下面是簡單的指令碼的工作原理-在執行指令碼之前已經登入到路由器(在實際使用案例中不是很有用)

import telnetlib

import datetime

import getpass

import sys

import re

import time

import pexpect

host1_ip = "192.168.6.131"

host1_port = "32772"

user ="cisco"

password = "cisco123"

tn=pexpect.spawn("telnet " + host1_ip + " " + host1_port, maxread=16384)

tn.sendline("show ip inte***ce brief")

time.sleep(5)

tn.expect("ce1#")

data1=tn.before

print(data1.decode('utf-8'))

輸出為(data1的內容):

show ip inte***ce brief

inte***ce ip-address ok? method status protocol

ethernet0/0 unassigned yes nvram administratively down down

ethernet0/1 unassigned yes nvram administratively down down

ethernet0/2 unassigned yes nvram administratively down down

ethernet0/3 unassigned yes nvram administratively down down

serial1/0 unassigned yes nvram administratively down down

serial1/1 unassigned yes nvram administratively down down

serial1/2 unassigned yes nvram administratively down down

serial1/3 unassigned yes nvram administratively down down

期望與「 ce1#」一起工作,因為這是「 ce1#」的第一次出現

但是,當我使用更有用的指令碼登入到路由器,對其進行配置,然後獲取/儲存show命令的輸出時,它將無法正常工作。

import telnetlib

import datetime

import getpass

import sys

import re

import time

import pexpect

host1_ip = "192.168.6.131"

host1_port = "32772"

user ="cisco"

password = "cisco123"

tn=pexpect.spawn("telnet " + host1_ip + " " + host1_port, maxread=16384)

tn.send("\r")

tn.expect("username: ")

tn.sendline(user)

tn.expect("password: ")

tn.sendline(password)

tn.sendline("terminal length 0")

tn.sendline("terminal width 0")

time.sleep(5)

tn.expect("ce1#")

tn.sendeof

tn.sendline("show ip inte***ce brief")

time.sleep(5)

tn.expect("ce1#")

data1=tn.before

print(data1.decode('utf-8'))

tn.sendline("exit")

輸出為:

terminal length 0

在「 show ip inte***ce brief」之後,用「 ce1#」期望不起作用,因為在很早之前就遇到過「 ce1#」。

當我登入路由器時,看到「 ce1#」。 當我配置「端子長度0」,「端子寬度0」時,看到ce1#

username: cisco

password:

ce1#terminal length 0

ce1#terminal width 0

如何清除緩衝區,以消除以前遇到的「 ce1#」? 嘗試過(1)在「(最好是child.before之前應該讀輸出」)之前新增「 expect「 ce1#」語句」(2)傳送eof(3)使用child.flush等傳送flush。它們都沒有幫助。

Mac上同時安裝python3和python2

系統 mac 已安裝環境 anaconda3,python3 由於在平時的專案中,經常由於各種python庫的版本不匹配的問題,導致python2和python3的執行環境無法相容。因此我們可以在上述已安裝環境的基礎上,再安裝python2。具體步驟非常簡單,參考下面。先檢查當前環境為python3...

win10上安裝python3和python2

摘自 做個記錄。python3.6安裝流程 選擇自定義安裝 直接next 為電腦上的所有使用者安裝 然後install就ok了!安裝完成之後,windows r 輸入 cmd 輸入 python v 來檢視版本。如果你只想安裝python3的話,看到這裡就可以了。到這python3.6就安裝完成了!...

python3 切片 python3 切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...