zoukankan      html  css  js  c++  java
  • Python实现Telnet连接

    import logging
    import telnetlib
    import time


    class TelnetClient():
    def __init__(self,):
    self.tn = telnetlib.Telnet()

    # 此函数实现telnet登录主机
    def login_host(self,host_ip,username,password):
    try:
    # self.tn = telnetlib.Telnet(host_ip,port=23)
    self.tn.open(host_ip,port=23)
    except:
    logging.warning('%s网络连接失败'%host_ip)
    return False
    # 等待login出现后输入用户名,最多等待10秒
    self.tn.read_until(b'login: ',timeout=10)
    self.tn.write(username.encode('ascii') + b' ')
    # 等待Password出现后输入用户名,最多等待10秒
    self.tn.read_until(b'Password: ',timeout=10)
    self.tn.write(password.encode('ascii') + b' ')
    # 延时两秒再收取返回结果,给服务端足够响应时间
    time.sleep(2)
    # 获取登录结果
    # read_very_eager()获取到的是的是上次获取之后本次获取之前的所有输出
    command_result = self.tn.read_very_eager().decode('ascii')
    if 'Login incorrect' not in command_result:
    logging.warning('%s登录成功'%host_ip)
    return True
    else:
    logging.warning('%s登录失败,用户名或密码错误'%host_ip)
    return False

    # 此函数实现执行传过来的命令,并输出其执行结果
    def execute_some_command(self,command):
    # 执行命令
    self.tn.write(command.encode('ascii')+b' ')
    time.sleep(2)
    # 获取命令结果
    command_result = self.tn.read_very_eager().decode('ascii')
    logging.warning('命令执行结果: %s' % command_result)

    # 退出telnet
    def logout_host(self):
    self.tn.write(b"exit ")

    if __name__ == '__main__':
    host_ip = '10.82.21.145'
    username = 'root'
    password = 'focus'
    command = 'reboot'
    telnet_client = TelnetClient()
    # 如果登录结果返加True,则执行命令,然后退出
    if telnet_client.login_host(host_ip,username,password):
    telnet_client.execute_some_command(command)
    telnet_client.logout_host()
    转:https://www.cnblogs.com/lsdb/p/9258964.html
  • 相关阅读:
    SQL语言
    数组的指针
    Java泛型
    python面向对象(下)
    Java枚举类enum
    理解Java的GC日志
    python生成器
    Java并发编程之ThreadLocal类
    python面向对象(上)
    Java并发编程之闭锁简介
  • 原文地址:https://www.cnblogs.com/jieliu8080/p/10511128.html
Copyright © 2011-2022 走看看