【问题标题】:telnetlib telnet.write() is not working as expectedtelnetlib telnet.write() 没有按预期工作
【发布时间】:2017-02-06 14:34:22
【问题描述】:

我正在尝试使用 python telnetlib 自动执行一项任务。这是我的代码:

    import telnetlib
    t = telnetlib.Telnet(self._ip_addr)
    # t.connect()

    if not t.expect(["User Name : "], timeout=10):  # Expect username prompt
        raise Exception('No login prompt is received')

    t.write(self._username + '\r\n')  # Send username

    if not t.expect(["Password  : "], timeout=10):  # Expect password prompt
        raise Exception('No password prompt is received')

    t.write(self._password + '\r\n')  # send password

    t.set_debuglevel(1)

    if not t.read_until("apc>", timeout=10):  # Expect prompt
        raise Exception('No command prompt is received')

    import time
    time.sleep(2)

    t.write("vt100\n")
    t.write("olOff 9\n")
    # t.close()

这段代码的输出如下:

Telnet(10.130.210.71,23): recv '*'
Telnet(10.130.210.71,23): recv '****'
Telnet(10.130.210.71,23): recv '*'
Telnet(10.130.210.71,23): recv '\r\n\r\nAmerican Power    Conversion               Networ'

Telnet(10.130.210.71,23): recv 'k Management Card AOS      v5.1.4\r\n'

Telnet(10.130.210.71,23): recv '(c) Copyright 2009 All Rights Reserved  RPDU 2g   '

Telnet(10.130.210.71,23): recv '                       v5.1.2\r\n-------------------'

Telnet(10.130.210.71,23): recv '--------------------------------------------------'

Telnet(10.130.210.71,23): recv '----------\r\nName      : Unknown                   '

Telnet(10.130.210.71,23): recv '                Date : 01/10/2011\r\nContact   : Unk'

Telnet(10.130.210.71,23): recv 'nown                                   Time : 06:1'

Telnet(10.130.210.71,23): recv '5:31\n\r'
Telnet(10.130.210.71,23): recv 'Location  : Unknown                               '

Telnet(10.130.210.71,23): recv '    User : Administrator\n\r'
Telnet(10.130.210.71,23): recv 'Up Time   : 85 Days 7 Hours 30 Minutes            '

Telnet(10.130.210.71,23): recv '    Stat : P+ N4+ N6+ A+\r\n\r\n'
Telnet(10.130.210.71,23): recv '\r\nType ? for command listing'
Telnet(10.130.210.71,23): recv '\r\nUse tcpip command for IP address(-i), subnet(-s)'

Telnet(10.130.210.71,23): recv ', and gateway(-g)\r\n\r\n'
Telnet(10.130.210.71,23): recv 'apc>'
Telnet(10.130.210.71,23): send 'vt100\n'
Telnet(10.130.210.71,23): send 'olOff 9\n'

我正在 Windows 上执行此代码。这里的问题是最后一个命令没有被执行。

谁能告诉我哪里做错了?

谁能推荐我

【问题讨论】:

  • 您是否尝试过使用\r\n 而不是\n 来执行最后的命令?有些服务器在这方面非常挑剔。
  • @mata,是的,我试过了,但没用
  • 在发送任何命令之前尝试清除读取缓冲区。
  • @saurabhbaid,请告诉我如何清除读取缓冲区
  • do read_very_eager() 是命令,它会在不阻塞 IO 的情况下读取缓冲区中的任何内容,因此在调用 t.write() 之前先调用 t.read_very_eager()

标签: python windows python-2.7 telnetlib


【解决方案1】:

如 cmets 中所回答,最后缺失:

t.read_until("apc>", timeout=10)

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-02
    • 2011-09-07
    • 2013-03-03
    相关资源
    最近更新 更多