Método de uso de la biblioteca telnetlib de Python3

telnetlibEl módulo proporciona una Telnetrealización de Telnetdichos acuerdos, aquellos que lograron Telnetel acuerdo proporcionado se pueden utilizar telnetlibpara iniciar sesión.

Por telnetlibfunciones básicas empaquetadas como clase.

#!/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)

La instancia de Telnet tiene los siguientes métodos:

Regrese hasta que se lea la cadena dada, o regrese después del tiempo de espera. Si no se encuentra ninguna coincidencia, se devuelve cualquier elemento disponible, que puede ser una cadena vacía.

Telnet.read_until(expected[, timeout])

Leer todos los datos hasta EOF.

Telnet.read_all()

Lea al menos un byte de datos preparados.

Telnet.read_some()

Lea todos los datos cocinados.

Telnet.read_very_eager()

Lea los datos disponibles en cualquier momento.

Telnet.read_eager()

Procese y devuelva los datos que ya están en la cola.

Telnet.read_lazy()

Devuelve cualquier dato en la cola de expertos.

Telnet.read_very_lazy()

Devuelve los datos recopilados entre el par SB / SE.

Telnet.read_sb_data()

Supongo que te gusta

Origin blog.csdn.net/yilovexing/article/details/109856289
Recomendado
Clasificación