利用python3的telnetlib模块

远程登录ros,输入帐号密码,然后执行命令,并导出结果到txt文本: 不过实际操作这种方式不行,因为telnet导出来的文本文件,带颜色编码,根本无法看哦。

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lzd
import time

def do_telnet(Host, username, password, finish, commands):
    import telnetlib
    '''''Telnet远程登录:Windows客户端连接Linux服务器'''

    # 连接Telnet服务器
    tn = telnetlib.Telnet(Host, port=23510)
    tn.set_debuglevel(2)#开启telnet调试模式

    # 输入登录用户名
    tn.read_until(b'Login: ')
    tn.write(username + b'\n')

    # 输入登录密码
    tn.read_until(b'Password:')
    tn.write(password + b'\n')

    # 登录完毕后执行命令
    tn.read_until(finish)
    #print(commands)
    tn.write(commands+b'\r\n')
    time.sleep(10)#这里一定要等待10秒,因为你write命令以后,会等待很长时间,原因不详。
    # 执行完毕后,终止Telnet连接(或输入exit退出)
    tn.read_until(finish)
    tn.write(b'quit\r\n')

    #time.sleep(3)

    result = tn.read_all()
    file_object = open('result.txt', 'wb')
    file_object.write(result)
    file_object.close()
    print('Finish')

    tn.close()
if __name__ == '__main__':
    # 配置选项
    Host = '192.168.200.100'  # Telnet服务器IP
    username = 'xxxx'.encode(encoding='utf-8')  # 登录用户名
    password = 'xxxx'.encode(encoding='utf-8')  # 登录密码
    finish = '>'.encode(encoding='utf-8')  # 命令提示符
    commands = 'ping 192.168.12.254 c 10'.encode(encoding='utf-8')
    do_telnet(Host, username, password, finish, commands)