import telnetlib
import time
# 定义交换机参数
HOSTS = ['10.61.168.x', ]for HOST in HOSTS:tn = telnetlib.Telnet(HOST,timeout=22)tn.read_until(b"Password: ")tn.write("h3capadmin".encode('ascii') + b"\n")  ##h3c默认密码time.sleep(0.2)tn.write(b"display  current-configuration  | include  wlan\n") ##执行的命令time.sleep(4.5)output_bytes =  tn.read_very_eager()  #尽可能多地读取所有可用的数据req = output_bytes.decode('ascii').replace('\r', '') #bytes转strips = []for line in req.splitlines():if not line.strip().startswith('wlan ac ip'):continueip = line.split(' ')[-1]ips.append(ip)# print(ip)tn.close()
 

 
- 立即读取:tn.read_very_eager()会尽可能多地读取所有可用的数据,而不会阻塞或等待更多的数据到达。这意味着它会立即返回当前缓冲区中的所有数据。
- 非阻塞:与 tn.read_all()不同,后者会等待直到连接关闭才返回数据,tn.read_very_eager()是非阻塞的,只返回当前可用的数据。
     
 
其他读取方法对比
 
- tn.read_all():读取所有数据,直到连接关闭。这是一个阻塞调用,适用于一次性读取大量数据的场景。
- tn.read_some():读取一些数据,如果没有数据可读则阻塞。适用于需要逐步读取数据的场景。
- tn.read_until(expected, timeout=None):读取数据直到遇到预期的字符串(- expected)或超时。适用于等待特定响应的场景。