Python3 telnetlib 库使用方法

telnetlib 模块提供了一个Telnet 实现 Telnet 协议的类,凡是实现了 Telnet 协议的设都可以使用 telnetlib 进行登录。

通过 telnetlib 基础功能将其封装为类。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import time
import telnetlib


class TelnetLib(object):

    def __init__(self):
        self.tn = None
        self.EXIT = b'quit\n'
        self.LOGIN = b'Login'
        self.USERNAME = b'Username:'
        self.PASSWORD = b'Password:'

    @staticmethod
    def format(data):
        return data.encode('UTF-8') + b'\n'

    def link(self, host, port=23, timeout=3):
        # 连接设备
        self.tn = telnetlib.Telnet(host, port, timeout)

    def login(self, username, password):
        # 监听登录事件
        self.tn.read_until(self.LOGIN)
        # 监听输入账户事件
        self.tn.read_until(self.USERNAME)
        # 输入账户
        self.tn.write(self.format(username))
        # 监听输入密码事件
        self.tn.read_until(self.PASSWORD)
        # 输入密码
        self.tn.write(self.format(password))

    def shell(self, command):
        # 执行命令
        self.tn.write(self.format(command))
        # 延时0.5s
        time.sleep(1)
        # 在I/O不阻塞的情况下读取所有数据,否则返回空
        data = self.tn.read_very_eager()
        # 解码后返回数据
        return data.decode('UTF-8')

    def __del__(self):
        # 退出设备
        self.tn.write(self.EXIT)
        # 关闭连接
        self.tn.close()


if __name__ == '__main__':
    tl = TelnetLib()
    tl.link(host='127.0.0.1', port=23, timeout=3)
    tl.login(username='admin', password='***')
    return_value = tl.shell(command='display ip routing-table')
    print(return_value)

Telnet 实例具有以下方法:

直到阅读到给定的字符串返回,或者超时返回。如果找不到匹配项,则返回可用的任何项,可能为空字符串。

Telnet.read_until(expected[, timeout])

读取所有数据直到EOF。

Telnet.read_all()

至少读取一个字节的熟数据。

Telnet.read_some()

读取所有熟数据。

Telnet.read_very_eager()

随时读取可用的数据。

Telnet.read_eager()

处理并返回队列中已有的数据。

Telnet.read_lazy()

返回已熟练队列中的任何数据。

Telnet.read_very_lazy()

返回SB / SE对之间收集的数据。

Telnet.read_sb_data()
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值