Python3 扩展包 TelnetLib 使用

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

import time
import telnetlib


class TelnetLib(object):

    def __init__(self):

        self.tn = None
        self._output = True
        self._system = False
        self.sleep = None
        self.timeout = None
        self.data = []

        self.EXIT = b'quit\n'
        self.USERNAME = b'Username:' or b'Login:' or b'username' or b'login'
        self.PASSWORD = b'Password:' or b'password'

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

    def link(self, host, port=23, sleep=1, timeout=3):
        try:
            self.sleep = sleep
            self.timeout = timeout
            self.tn = telnetlib.Telnet(host, port, self.timeout)
        except Exception as e:
            raise ValueError('设备连接错误:%s' % e)

    def login(self, username, password):
        try:
            self.data.append(self.tn.read_until(self.USERNAME, self.timeout))
            self.tn.write(self.format(username))
            time.sleep(self.sleep)
            self.data.append(self.tn.read_until(self.PASSWORD, self.timeout))
            self.tn.write(self.format(password))
            time.sleep(self.sleep)
            if self._output is True:
                self.tn.write(self.format('screen-length disable'))
        except Exception as e:
            raise ValueError('设备登录错误:%s' % e)

    def system(self):
        self._system = True
        self.tn.write(self.format('system-view'))
        time.sleep(self.sleep)

    def shell(self, command):
        try:
            self.tn.write(self.format(command))
            time.sleep(self.sleep)
            self.data.append(self.tn.read_very_eager())
        except Exception as e:
            raise ValueError('命令执行错误:%s' % e)

    def log(self):
        return ''.join([data.decode('UTF-8') for data in self.data if data])

    def exit(self):
        try:
            if self._system is True:
                self.tn.write(self.EXIT)
            self.tn.write(self.EXIT)
            time.sleep(self.sleep)
            self.data.append(self.tn.read_very_eager())
            self.tn.close()
        except Exception as e:
            raise ValueError('设备退出错误:%s' % e)

猜你喜欢

转载自blog.csdn.net/yilovexing/article/details/113406589
今日推荐