Python + Telnet基本使用
代码先上:
import telnetlib
tn = telnetlib.Telnet('想要连接的IP地址')
tn.write('输入命令'.encode('utf-8') + b'\n')
tn.read_until(b'期望字符')
res = tn.read_very_eager().decode('utf-8')
print(res)
使用时可活用read_very_eager(),可达到一定的数据过滤作用 详情请百度
简单的封装
def query_node(self, node, tn, wait_time=None):
"""
查询单条命令获取信息
:param tn: telnet连接,如上面代码中的tn
:param node: 命令
:param wait_time: 捕获回显前的等待时间
:return: 查询到的回显
"""
tn.write(node.encode('utf-8') + b'\n')
time.sleep(2) if wait_time else pass
out = tn.read_very_eager().decode('utf-8')
out = out.split(node)[-1].strip()
self.print(f"{node} {out}")
return out
def query_nodes(self, nodes, tn, split_value=None, wait_time=None):
"""
查询多条命令并获取信息
:param tn: telnet连接,如上面代码中的tn
:param split_value: 针对相似的信息,进行字符串切割清洗
:param nodes: 命令列表
:param wait_time: 捕获回显前的等待时间
:return: 过滤出的value 值列表
"""
value_list = []
for node in nodes:
tn.write(node.encode('utf-8') + b'\n')
time.sleep(2) if wait_time else pass
value = tn.read_very_eager().decode('utf-8')
if split_value:
value = value.split(split_value)[-1].strip()
value = value.split('\r\n')[0].strip()
else:
value = value.split(node)[-1].strip()
value_list.append(value)
self.print(f"{node} {value}")
return value_list