如何在Python3中使用telnetlib模块连接网络设备

作者:chier11 时间:2022-03-11 12:57:33 

Python中专门提供了telnetlib库,用来完成基于telnet协议的通信功能。

python3下使用telnetlib模块连接网络设备经常会遇到字节与字符不匹配的问题

问题提示如下:


import telnetlib
Host = "10.10.10.10"
# 连接Telnet服务器
tn = telnetlib.Telnet(Host, port=23, timeout=10)
tn.set_debuglevel(0)

# 输入登录用户名
tn.read_until(b'login: ')
tn.write(b"admin" + b'\n')

# 输入登录密码
tn.read_until(b'Password: ')
tn.write(b"Admin@1234" + b'\n')

tn.read_until(b'#')
tn.write(b"cd /home/sd" + b'\n')

tn.read_until(b'#')
tn.write(b"ls -al" + b'\n')

r = tn.read_until(b'#').decode('ASCII')
r1 = r.split(r"\r\n")
for i in r1:
 print(i)

tn.close()

以下是设备实例:


>>> tn=telnetlib.Telnet("10.10.0.6",timeout=2)
>>> tn.read_until(b'login: ',timeout=2)
b"\r\n******************************************************************
****\r\n* Copyright (c) 2004-2018 New H3C Technologies Co., Ltd. All rig
rved.*\r\n* Without the owner's prior written consent,
   *\r\n* no decompiling or reverse-engineering shall be allowed.
    *\r\n**********************************************************
************\r\n\r\nlogin: "
>>> tn.write(b'admin'+b'\n')
>>> tn.read_until(b'Password: ',timeout=2)
b'jgtl\r\r\nPassword: '
>>> tn.write(b'Admin@123'+b'\n')
>>> tn.read_until(b'>')
b'\r\n<bangong-01>'
>>> tn.write(b'ping 10.10.0.7')
>>> tn.read_until(b'>')

以上是命令行执行的过程。写成脚本需要考虑两个问题,一个是变量的替换如何编码解封,一个是输出结果加解码


#-*- coding:utf-8 -*-
import telnetlib
import re
import csv
import sys
import time
from datetime import datetime

host_dict={
 "ip":"10.10.0.6",
 "user":"admin",
 "pwd":"Admin@123"
}

def get_loss(addrlist):
 host=host_dict["ip"]
 user=host_dict["user"]
 pwd=host_dict["pwd"]
 print (host)
 resultlist = []
 #try:
 tn = telnetlib.Telnet(host, timeout=2)
 print ("AA")
 if len(host_dict["pwd"]) and len(host_dict["user"]):
   print ("BB")
   tn.read_until(b"login: ", timeout=3)
   #tn.write(b"admin"+b"\n")
   tn.write(user.encode()+b"\n")
   tn.read_until(b"Password: ", timeout=3)
   #tn.write(b"Admin@123"+b"\n")
   tn.write(pwd.encode()+ b"\n")
   # p_error = re.compile("found at")

if tn.read_until(b">", timeout=4).find(b">") != -1:
   print("Connect to {host} ...... ".format(host=host))
   tn.write(b"ping 127.0.0.1\n")
   print (tn.read_until(b'01>'))
 else:
   print("%s Wrong username or password!!!" % host)
   return ""
 #tn.read_until(b">")

if len(addrlist) != 0:
   for i in range(len(addrlist)-1):
     tep = {}
     command = "ping " + addrlist[i]
     print("command:", command)
     tn.write(command.encode() + b"\n")
     result = str(tn.read_until(b"01>"))
     print(result)
     re_loss = re.compile("\d+\.\d+%")
     loss = re_loss.findall(result)
     tep[host] = loss[0]
     resultlist.append(tep)
     #if p_error.search(result.decode()):
     #  print("There is a error in this command: {0}".format(c.decode()))
 tn.close()
 #except Exception as e:
   #if e:
   #  print ("Connect to {host} Failed!!!".format(host=host),e)
   #return ""
 return resultlist

if __name__=="__main__":
 addrlist=['10.10.0.2','10.10.0.5']
 print ("get_loss",get_loss(addrlist))

来源:https://blog.51cto.com/chier11/2530085

标签:Python,telnetlib,模块
0
投稿

猜你喜欢

  • python实现Pyecharts实现动态地图(Map、Geo)

    2021-01-21 11:33:58
  • Python 中将二进制转换为整数的多种方法

    2023-01-11 17:30:53
  • 浅析网页色彩应用

    2009-12-21 16:17:00
  • SQL Server中调用C#类中的方法实例(使用.NET程序集)

    2024-01-23 17:24:56
  • Django模板标签中url使用详解(url跳转到指定页面)

    2023-12-18 00:09:54
  • 用python 制作图片转pdf工具

    2023-02-13 09:14:51
  • 用python代码做configure文件

    2023-08-17 13:33:58
  • asp之自动闭合HTML/ubb标签函数+简单注释

    2008-09-29 12:21:00
  • 在Python中使用matplotlib模块绘制数据图的示例

    2023-08-01 01:39:45
  • 学会sql数据库关系图(Petshop)

    2012-10-07 10:34:49
  • Python + Selenium 实现模拟登录jd实例分享

    2023-12-16 06:56:09
  • Python实现使用request模块下载图片demo示例

    2021-10-08 10:13:48
  • python+pyqt5编写md5生成器

    2022-03-11 03:06:47
  • Django使用paginator插件实现翻页功能的实例

    2023-09-06 05:23:19
  • Anaconda 查看、创建、管理和使用python环境的方法

    2023-11-29 02:34:48
  • Golang拾遗之自定义类型和方法集详解

    2024-03-19 03:08:29
  • Python读取word文本操作详解

    2023-08-23 15:32:50
  • javascript自然分类法算法实现代码

    2024-04-28 09:33:46
  • Python基础之输入,输出与高阶赋值详解

    2023-05-21 10:00:32
  • 解决安装python库时windows error5 报错的问题

    2022-06-14 05:26:04
  • asp之家 网络编程 m.aspxhome.com