Méthode d'utilisation de la bibliothèque telnetlib Python3

telnetlibLe module fournit une Telnetréalisation de Telnetces accords, ceux qui ont obtenu Telnetl'accord prévu peuvent être utilisés telnetlibpour se connecter.

Par telnetlibdes fonctions de base conditionnées en classe.

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

L'instance Telnet a les méthodes suivantes:

Retourne jusqu'à ce que la chaîne donnée soit lue, ou retourne après l'expiration du délai. Si aucune correspondance n'est trouvée, tous les éléments disponibles sont renvoyés, ce qui peut être une chaîne vide.

Telnet.read_until(expected[, timeout])

Lisez toutes les données jusqu'à EOF.

Telnet.read_all()

Lire au moins un octet de données cuites.

Telnet.read_some()

Lisez toutes les données cuites.

Telnet.read_very_eager()

Lisez à tout moment les données disponibles.

Telnet.read_eager()

Traitez et renvoyez les données déjà dans la file d'attente.

Telnet.read_lazy()

Renvoyez toutes les données de la file d'attente qualifiée.

Telnet.read_very_lazy()

Renvoie les données collectées entre la paire SB / SE.

Telnet.read_sb_data()

Je suppose que tu aimes

Origine blog.csdn.net/yilovexing/article/details/109856289
conseillé
Classement