Python基础教程:用Python怎么telnet到网络设备

简介: Python基础教程:用Python怎么telnet到网络设备

Python基础教程:用Python怎么telnet到网络设备

0.前言

Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它的缺陷太明显了,就是不安全,信息明文传送,极容易被攻击窃取信息,不推荐使用,但本节我还是先从它入手哈。

1. 测试环境及关键代码解释

1.1 简单测试环境

使用python3环境
使用内置telnetlib模块
简单的实验环境

说明:

cmd.txt文件里面命令如下:

terminal length 0

show clock

show ip interface brief

list.txt文件里面的IP如下:

192.168.1.101

192.168.1.102

192.168.1.103

1.2 关键代码

import xx:导入模块

class xx:定义类

def xx: 定义函数

try-except :处理可能引发的异常

tn.read_until(expected, timeout=None):等待预期字符串或等待超时

tn.write(buffer):写入的字符串(意思发送给命令给设备)

tn.expect(list, timeout=None):读显,list采用正则表达式(意思把执行过程显示出来)

tn.read_very_eager():读显(意思把执行过程显示出来)

tn.open(host, port=0[, timeout]):连接主机

tn.close():关闭连接

Tips:终端与网络设备交付的信息是以byte类型,所以要把终端上的字符串encode编码转换为byte对象,网络设备回显的byte信息要decode解码。

py
Python基础教程:用Python怎么telnet到网络设备
2. 完整代码

'''

欢迎关注:'333'

此平台是网路工程师个人日常技术、项目案例经验分享,

为巩固及提升技术能力乃至共享所学所知技术

也欢迎各位工程师一起分享、一起成长。

'''

!/usr/bin/env python

coding:utf-8

'导入模块'

from telnetlib import Telnet

import time

import logging

'定义类'

class TelnetClient():

'初始化属性'

def __init__(self):

self.tn = Telnet()

'定义login_host函数,用于登陆设备'

def login_host(self,ip,username,password,enable=None,verbose=True):

'连接设备,try-except结构'

try:

self.tn.open(ip,port=23)

except:

logging.warning('%s网络连接失败' %ip)

return False

'输入用户名'

self.tn.read_until(b'Username:', timeout=1)

self.tn.write(b'n')

self.tn.write(username.encode() + b'n')

rely = self.tn.expect([], timeout=1)[2].decode().strip() #读显

if verbose:

print(rely)

'输入用户密码'

self.tn.read_until(b'Password:', timeout=1)

self.tn.write(password.encode() + b'n')

rely = self.tn.expect([], timeout=1)[2].decode().strip()

if verbose:

print(rely)

'进去特权模式'

if enable is not None:

self.tn.write(b'enablen')

self.tn.write(enable.encode() + b'n')

if verbose:

rely = self.tn.expect([], timeout=1)[2].decode().strip()

print(rely)

time.sleep(1)

rely = self.tn.read_very_eager().decode()

if 'Login invalid' not in rely:

logging.warning('%s登陆成功' % ip)

return True

else:

logging.warning('%s登陆失败,用户名或密码错误' % ip)

return False

'定义do_cmd函数,用于执行命令'

def do_cmd(self,cmds):

'读取文件,for语句循环执行命令'

with open(cmds) as cmd_obj:

for cmd in cmd_obj:

self.tn.write(cmd.encode().strip() + b'n')

time.sleep(2)

rely = self.tn.read_very_eager().decode()

logging.warning('命令执行结果:n %s' %rely)

'定义logout_host函数,关闭程序'

def logout_host(self):

self.tn.close()

if name == '__main__':

username = 'cisco' #用户名

password = 'cisco' #密码

enable = 'cisco' #特权密码

lists = 'list.txt' #存放IP地址文件,相对路径

cmds = 'cmd.txt' #存放执行命令文件,相对路径

telnet_client = TelnetClient()

'读取文件,for语句循环登陆IP'

with open(lists,'rt') as list_obj:

for ip in list_obj:

'如果登录结果为True,则执行命令,然后退出'

if telnet_client.login_host(ip.strip(),username,password,enable):

telnet_client.do_cmd(cmds)

telnet_client.logout_host()

time.sleep(2)

3. 运行效果

备注:这个运行的效果我只存放了192.168.1.101这个IP,精简一下,为了效果。

4. 报错效果

远程连接不上
用户名和密码错误

5. 碎碎念

这些只是一些简单的代码,待优化的地方还是很多,先给小伙伴们学习一下,telnet协议是个不安全的,基本网络环境很少用了,ssh为常用的协议,安全又好用!伙伴们有需要 补充的欢迎留言!

相关文章
|
1月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
2月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
471 1
|
30天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
1月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
116 1
|
2月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
667 19
|
2月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
2月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
97 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
3月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
229 18
|
2月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
3月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
244 0

推荐镜像

更多
下一篇
oss云网关配置