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.mfbz.cn/a/556487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

气象观测站点数据下载与处理

一、下载途径 全国400多个气象站气候数据&#xff08;1942-2022&#xff09; 王晓磊&#xff1a;中国空气质量/气象历史数据 | 北京市空气质量历史数据 气象数据免费下载网站整理 中国气象站观测的气象数据怎么下载 二、R语言处理 2.1 提取站点文件 library(dplyr) library(…

(助力国赛)数学建模可视化!!!含代码1(折线图、地图(点)、地图(线)、地图(多边形)、地图(密度)、环形图、环形柱状图、局部放大图)

众所周知&#xff0c;数学建模的过程中&#xff0c;将复杂的数据和模型结果通过可视化图形呈现出来&#xff0c;不仅能够帮助我们更深入地理解问题&#xff0c;还能够有效地向评委展示我们的研究成果。   今天&#xff0c;作者将与大家分享8种强大的数学建模可视化图形及其在…

解决VirtualBox虚拟机启动失败的问题

一.出现的问题&#xff08;未能启动虚拟电脑&#xff0c;由于物理网卡未找到&#xff09; 一、错误信息分析 “未能启动虚拟电脑&#xff0c;由于物理网卡未找到”&#xff1a;这个错误通常是由于VirtualBox无法识别或连接到物理网卡造成的。可能是由于驱动程序问题、网络设置错…

2024年阿里云最便宜的轻量应用服务器与云服务器价格及优惠购买入口

2024年&#xff0c;阿里云推出了几款价格最便宜的轻量应用服务器和云服务器&#xff0c;其中轻量应用服务器2核2G3M公网带宽50GB 高效云盘活动价格61元1年&#xff0c;经济型e实例4核16G10M公网带宽100G ESSD Entry云盘活动价格最低只要30元/1个月&#xff0c;通用算力型u1实例…

pyskl手势/动作识别的实现与pytorch cuda环境部署保姆教程

恭喜你&#xff0c;找到这篇不需要翻墙就能够成功部署的方法。在国内布置这个挺麻烦的&#xff0c;其他帖子会出现各种问题不能完全贯通。便宜你了。。 实话5年前我用1080训练过一个基于卷积和ltsm的手势识别&#xff0c;实话实说感觉比现在效果好。是因为现在的注意力都在tra…

【Spring】Spring MVC入门

Spring MVC入门 一、什么是Spring Web MVC&#xff1f; 1.1 MVC定义 MVC是Model View Controller的缩写&#xff0c;是一种软件架构的设计模式&#xff0c;将软件系统分为模型、视图、控制器三个部分。 示意图如下: 可以看到&#xff0c;Controller作为一个“粘合剂”处于M…

Hadoop——Yarn基础架构

Hadoop——Yarn基础架构 Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个子项目&#xff0c;它是用于集群资源管理的框架&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&…

Mac 利用Homebrew安装JDK

一、安装JDK17 1.安装openjdk17 2.把homebrew安装的openjdk17软链接到系统目录&#xff1a; brew install openjdk17 sudo ln -sfn $(brew --prefix)/opt/openjdk17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk 一、检查是否安装成功 在Termina…

基于SSM的列车订票管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的列车订票管理系统3拥有两种角色&#xff1b;管理员、用户 管理员&#xff1a;用户管理、车票管理、购票指南管理、系统管理等 用户&#xff1a;发布帖子、登录注册、购票等 1.…

Spring Boot 整合 Mockito:提升Java单元测试的高效实践

引言 在Java开发领域&#xff0c;Spring Boot因其便捷的配置和强大的功能而受到广泛欢迎&#xff0c;而Mockito作为一款成熟的单元测试模拟框架&#xff0c;则在提高测试质量、确保代码模块间解耦方面扮演着至关重要的角色。本文将详细介绍如何在Spring Boot项目中整合Mockito&…

千锤百炼算法系列之动态规划

题外话 这段时间,我必须把算法弄明白 这篇直接讲解动态规划所有细节! 前面那篇 千锤百炼之每日算法(一)-CSDN博客 也有关于动态规划的讲解,也非常详细 很简单,我成尊不就是了?!!! 正题 动态规划 这里我们主要是让大家明白什么是动态规划,怎么用动态规划解题 我就不用…

手动给docusaurus添加一个搜索

新版博客用docusaurus重构已经有些日子了&#xff0c;根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题。但是流水有意&#xff0c;落花无情。 algolia总是不给我回复&#xff0c;我只能对着algolia的申请页面仰天长叹。 正常情况的申请 按照docusaur…

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

简述 移动互联网的快速发展&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;已经深入到人们的生活中。特别是对于社区论坛类应用&#xff0c;小程序版本可以更好地满足用户快速、便捷获取信息的需求。下面给大家分享一款社区论坛小圈子小程序源码系统。 在这个信息…

跨境电商MercadoLibre(美客多)平台预约号操作流程自动化系统

目录 一、前置配置准备 1. 安装Chrome插件 2. 添加预约配置 二、开始使用 MercadoLibre&#xff08;美客多&#xff09;于2021年10月18号上线了新预约入仓系统&#xff0c;在MercadoLibre美客多平台上&#xff0c;新入仓预约系统是一项非常重要的功能&#xff0c;它可以帮助…

2024华中杯数学建模挑战赛选题建议及各题思路来啦!

大家好呀&#xff0c;华中杯数学建模开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c; 本次华中杯推荐选择C题目。难度方面A&#xff1e;B&#xff1e;C&#xff0c;A是优化类题目&#xff0c;难度较高&#xff0c;建议参考23国赛A优秀论…

STM32G431RBT6移植FreeRTOS

引言&#xff1a; 本文专门为参加了蓝桥杯嵌入式赛道的同学准备&#xff0c; 大家可能会有这样一个问题&#xff0c; 比完赛之后&#xff0c; 对于像继续使用STM32G431RBT6学习FreeRTOS的&#xff0c; 发现网上的教程使用的板子基本上都是F1和F4的&#xff0c; 其实呢&#xff…

《八》QSplitter拆分器以及QDockWidget窗口详解

QSplitter简介 QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。 单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件&#xff0c;并使用insertWidget()或addWidget()添加它们。 常用方法 默认情况下&#xff0c;QSplitter会动态…

甘特图是什么?如何利用其优化项目管理流程?

甘特图是项目管理软件中十分常见的功能&#xff0c;可以说每一个项目经理都要学会使用甘特图才能更好的交付项目。什么是甘特图&#xff1f;甘特图用来做什么&#xff1f;简单来说一种将项目任务与时间关系直观表示的图表&#xff0c;直观地展示了任务进度和持续时间。 一、甘特…

【k8s】:kubectl 命令设置简写启用自动补全功能

【k8s】&#xff1a;kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Kubernetes&#xff08;K8s&#xff09;是一个强大的容器编排平台&#…

【话题】程序员如何搞副业,简单探讨下

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景前提条件打造私域广结朋友平台 技能转化为价值1. 副业途径2. 如何开展3. 未来趋势与建议4. 挑战与策略5. 规划与发展 文章推荐 背景 程序员不仅拥有将抽象概念转化…
最新文章