python内置库_telnetlib学习笔记

文章目录

  • 介绍
  • 实例
    • 登录设备执行命令
    • 在代码中解决分页问题,并保存日志
  • 常见问题
    • 处理分页问题

介绍

  1. 官网资料

实例

登录设备执行命令

  1. 代码
    from telnetlib import Telnet########################################   设置变量   ########################################
    host = '192.168.85.202'
    port = 23
    username = 'admin'
    password = 'admin'
    ########################################   设置变量   ########################################
    tn = Telnet(host=host,port=port,timeout=5)
    # 如果定义了变量username,则输入用户名
    if "username" in vars():# 读取回显,判断出现"Username:"字符tn.read_until(b'Username:',timeout=1)# 发送用户名和回编码为字节tn.write(username.encode("utf-8") + b'\n')
    # 读取回显,判断出现字符"Password:"
    tn.read_until(b'Password:')
    # 发送密码和回车
    tn.write(password.encode("utf-8") + b'\n')
    # 发送命令
    tn.read_until(b'>',timeout=5)
    # 开始发送命令,编码成字节格式
    tn.write(b'display version' + b'\n')
    output = tn.read_until(b'>',timeout=5)
    print(output.decode("utf-8"))
    

在代码中解决分页问题,并保存日志

  1. 有的设备不支持类似’screen-length 0 temporary’的命令,需要使用代码解决分页的问题
  2. 代码
    from pathlib import Path
    from telnetlib import Telnet
    from datetime import datetime########################################   设置变量   ########################################
    host = '10.10.10.10'
    port = 23
    #username = 'admin'
    password = 'admin'
    # 等待提示符出来,判断命令执行结束,推荐改成自己的设备名称
    prompt = '<HuaWei>'
    log_file = Path(f'/opt/bdidc/share/share/work/OA/devices/YD-IDC-SJZX-OA1/{datetime.now().strftime("%Y-%m-%d")}.txt')
    ########################################   设置变量   ########################################
    tn = Telnet(host=host,port=port,timeout=5)
    if "username" in vars():# 读取回显,判断出现"Username:"字符tn.read_until(b'Username:',timeout=1)# 发送用户名和回编码为字节tn.write(username.encode("utf-8") + b'\n')
    # 读取回显,判断出现字符"Password:"
    tn.read_until(b'Password:')
    # 发送密码和回车,需编码为字节
    tn.write(password.encode("utf-8") + b'\n')
    logined = tn.read_until(prompt.encode("utf-8"),timeout=5)
    if prompt.encode("utf-8") not in logined:print('未成功登录设备,程序结束')
    else:print('成功登录设备,开始执行命令')# 开始发送命令,编码成字节格式tn.write(b'display current-configuration' + b'\n')# 处理分页output = str()while True:# 读取输出直到看到"More"提示output_temp = tn.read_until(b"More", timeout=5)output += output_temp.decode('utf-8')#print(output_temp.decode('utf-8'), end='')  # 输出当前页的内容if b"More" in output_temp:tn.write(b" ")  # 模拟按下空格键来继续显示下一页内容else:break  # 如果没有"More"提示了,退出循环output += tn.read_until(prompt.encode("utf-8"),timeout=5).decode("utf-8")tn.close()# 保存日志到文件output2 = output.strip()output2 = output2.split('\n')file = open(log_file,'w')for line in output2:if "More" in line:line = line.replace('  ---- More ----[6n[16D                [16D','')file.write(line.replace('\r','') + '\n')file.close()print('脚本运行结束')
    

常见问题

处理分页问题

  1. 有的设备不支持类似’screen-length 0 temporary’的命令,需要使用代码解决分页的问题
  2. 代码
    # 处理分页
    while True:# 读取输出直到看到"More"提示output = tn.read_until(b"More", timeout=5)print(output.decode('utf-8'), end='')  # 输出当前页的内容if b"More" in output:tn.write(b" ")  # 模拟按下空格键来继续显示下一页内容else:break  # 如果没有"More"提示了,退出循环
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 SVG绘制各种图表

1. 折线图 <svg width"400" height"200"><!-- X轴 --><line x1"50" y1"150" x2"350" y2"150" stroke"black" /><!-- Y轴 --><line x1"50" y1"150" x2…

Linux 2.进程(守护进程)

守护进程 何谓守护进程常见守护进程进程查看命令pskill命令编写简单守护进程守护进程的父进程 何谓守护进程 daemon&#xff0c;表示守护进程&#xff0c;简称为d&#xff08;进程名后面带d的基本就是守护进程&#xff09; 长期运行&#xff08;一般是开机运行直到关机时关闭&…

【Linux驱动层】iTOP-RK3568学习之路(一):在RK3568上编译内核模块

在RK3568上编译内核模块 helloword.c #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h>static int helloworld_init(void){printk("helloworld!\n");return 0; }static void helloworld_exit(void){printk("hell…

DeepLab V2: 改进版的DeepLab V1

文章目录 摘要部分概述部分:IntroductionRelated Work详细内容:Methods空洞卷积多尺度问题CRFs,全连接条件随机场实验PASCAL VOC 2012PASCAL-Context数据集PASCAL-Person-Part数据集Cityscapes数据集一些改进空间DeepLab V2版本实际上我理解不算是一个新版本,而是V1版本的作…

【Node.js从基础到高级运用】二十五、Node.js中Cluster的作用

引言 Node.js中的cluster模块允许您轻松创建共享服务器端口的子进程。这是一个核心模块&#xff0c;用于在Node.js应用程序中实现多进程架构&#xff0c;以充分利用多核CPU系统的计算能力。 cluster介绍 当您启动一个Node.js应用程序时&#xff0c;默认情况下它运行在单个进程…

【Python】什么是pip,conda,pycharm,jupyter notebook?conda基本教程

pip--conda--pycharm--jupyter notebook &#x1f343;pip&#x1f343;conda&#x1f343;Pycharm&#x1f343;jupyter notebook&#x1f343;Conda基本教程☘️进入base环境☘️创建一个新的环境☘️激活环境☘️退出环境☘️查看电脑上都安装了哪些环境☘️删除已创建的项目…

Mac 部署 GPT-2 预训练模型 gpt2-chinese-cluecorpussmall

文章目录 下载 GPT-2 模型快速开始 GPT-2 下载 GPT-2 模型 https://huggingface.co/uer/gpt2-chinese-cluecorpussmall git clone https://huggingface.co/uer/gpt2-chinese-cluecorpussmall # 或单独下载 LFS GIT_LFS_SKIP_SMUDGE1 git clone https://huggingface.co/uer/gpt…

汉译英早操练-(十四)

汉译英早操练-&#xff08;十三&#xff09;-CSDN博客 文接上回。我们上次说了汉译英的时候遇到长难句要先找动词&#xff0c;在找到动词的发出者&#xff0c;重新整理句子&#xff0c;让含义更加明晰&#xff0c;进而用简明英语的原则&#xff0c;表达汉语当中的长难句。 理论…

使用Docker,【快速】搭建个人博客【WordPress】

目录 1.安装Mysql&#xff0c;创建&#xff08;WordPress&#xff09;用的数据库 1.1.安装 1.2.创建数据库 2.安装Docker 3.安装WodPress&#xff08;使用Docker&#xff09; 3.1.创建文件夹 3.2.查看镜像 3.3.获取镜像 3.4.查看我的镜像 3.5.使用下载的镜像&#xf…

go处理json

在 Go 中&#xff0c;你可以使用内置的 encoding/json 包来处理 JSON 格式数据。该包提供了函数和类型&#xff0c;使你能够将 JSON 数据解析为 Go 对象&#xff08;反序列化&#xff09;或将 Go 对象转换为 JSON 数据&#xff08;序列化&#xff09;。 下面是一些常见的 JSON…

Linux的学习之路:11、地址空间

摘要 本章主要是说一下地址空间&#xff0c;我也只是按照我的理解进行解释&#xff0c;可能说不清楚&#xff0c;欢迎指正 目录 摘要 一、空间布局图 二、代码测试一下 三、进程地址空间 四、测试代码 一、空间布局图 如下方图片可以看出地址空间有几种&#xff0c;这里…

Arduino源代码(ino)在Proteus中调试总结

一、前言 基于BluePill Plus开发板&#xff08;该板是毕设网红板&#xff09; BluePill Plus / WeAct Studio 微行工作室 出品 BluePill-Plus/README-zh.md at master WeActStudio/BluePill-Plus GitHub 首页-WeAct Studio-淘宝网 (taobao.com) 在Proteus中对应的例子是&…

每日OJ题_多源BFS①_力扣542. 01 矩阵(多源BFS解决最短路原理)

目录 多源BFS解决最短路算法原理 力扣542. 01 矩阵 解析代码 多源BFS解决最短路算法原理 什么是单源最短路 / 多源最短路&#xff1f; 之前的BFS解决最短路都是解决的单源最短路。 画图来说&#xff0c;单源最短路问题即为&#xff1a; 而对于多源最短路问题: 如何解决此…

Docker容器逃逸-特权模式-危险挂载-Procfs

Docker容器逃逸-特权模式-危险挂载 Docker这个概念&#xff1a; Docker 容器与虚拟机类似&#xff0c;但二者在原理上不同&#xff0c;容器是将操作系统层虚拟化&#xff0c;虚拟机则是虚拟化硬件&#xff0c;因此容器更具有便携性、高效地利用服务器。 ‍ Docker会遇到的安…

vue3【实用教程】侦听器 watch,自动侦听 watchEffect(),$watch,手动停止侦听器

watch 侦听明确指定的状态变化执行回调 实战场景 侦听路由传参的变化&#xff0c;重新访问接口&#xff0c;刷新页面侦听接口返回值的变化&#xff0c;刷新页面 侦听值类型数据 // 选项式 API watch: {// 每当 question 改变时&#xff0c;这个函数就会执行question(newQue…

京东微服务microApp使用总结

前言 基于现有业务门户进行微服务基础平台搭建 主应用框架&#xff1a;vue3vite 子应用框架&#xff1a;vue2webpack / vue3vite在这里插入代码片 本地调试即可&#xff1a;主应用子应用进行打通&#xff08;注意&#xff1a;两者都是vue3vite&#xff09; 问题总结 1.嵌入…

多数元素(C++)

给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3 示例 …

pytorch框架下的逻辑回归代码解读

# -*- coding: utf-8 -*- """ # file name : lesson-05-Logsitic-Regression.py # author : tingsongyu # date : 2019-09-03 10:08:00 # brief : 逻辑回归模型训练 """ import torch import torch.nn as nn import matplotlib.…

压电式微机械超声换能器(PMUT)可替代传统超声换能器 下游应用范围广泛

压电式微机械超声换能器&#xff08;PMUT&#xff09;可替代传统超声换能器 下游应用范围广泛 压电式微机械超声换能器&#xff08;PMUT&#xff09;&#xff0c;是一种基于正逆压电效应与微机械&#xff08;MEMS&#xff09;技术制造而成的发射、接收超声波以实现检测的装置。…

个人开发 App 最简单方法:使用现代开发工具和平台

在移动应用市场的蓬勃发展下&#xff0c;个人开发者也有机会将自己的创意转化为实际的应用程序&#xff0c;并通过应用商店实现盈利。然而&#xff0c;对于许多初学者来说&#xff0c;如何开始个人开发一个应用可能会感到困惑。本文将介绍个人开发 App 的最简单方法&#xff0c…