当前位置: 首页 > 面试题库 >

如何在python telnetlib中禁用telnet回声?

年嘉禧
2023-03-14
问题内容

嗨,我知道我应该发送“ IAC DONT ECHO”消息,但是如何使用telnetlib呢?这是我的测试,但是不起作用。

 #!/usr/bin/env python2
 u"""test"""
 # -*- coding: utf-8 -*-

 import sys
 import telnetlib
 import time

 HOST = "10.10.5.1"
 tn = telnetlib.Telnet(HOST, timeout=1)
 tn.read_until("login: ")
 tn.write("login\n")
 tn.read_until("Password: ")
 tn.write("pass\n")

 print "###########"
 time.sleep(0.5)
 print tn.read_very_eager()

 tn.write("ls /\n")
 time.sleep(0.5)
 print tn.read_very_eager()

 # diable echo here
 tn.write(telnetlib.IAC + "\n")
 tn.write(telnetlib.DONT + " " + telnetlib.ECHO + "\n")
 time.sleep(0.5)
 print tn.read_very_eager()

 tn.write("ls /\n")
 time.sleep(0.5)
 print tn.read_very_eager()

 print "########### exit"
 tn.write("exit\n")
 print tn.read_all()

问题答案:

您发送的序列错误:

# diable echo here
tn.write(telnetlib.IAC + "\n")
tn.write(telnetlib.DONT + " " + telnetlib.ECHO + "\n")

THEIAC DONT ECHO以三个字节发送,没有任何填充,空格或换行符。因此,请尝试以下操作:

tn.write(telnetlib.IAC + telnetlib.DONT + telnetlib.ECHO)

但是,实际上关闭回声可能还不够。实际上,最常用的解决方案是说 将执行回显,这将使另一端停止进行回显:

tn.write(telnetlib.IAC + telnetlib.WILL + telnetlib.ECHO)

编辑:
阅读telnetlib手册页后,我看到该write功能将:

将一个字符串写入套接字,将所有IAC字符加倍。

因此,使用Telnet对象write功能将无法发送这些序列,您必须获取套接字并使用它来编写序列:

def write_raw_sequence(tn, seq):
    sock = tn.get_socket()
    if sock is not None:
        sock.send(seq)

write_raw_sequence(tn, telnetlib.IAC + telnetlib.WILL + telnetlib.ECHO)


 类似资料:
  • 我正在使用logback。设置日志环境的xml文件。这里我有两个附加器,一个用于控制台,另一个用于文件。控制台appender将始终打印值,但需要时需要打开文件appender。 以下是我的配置,其中两个追加器STDOUT和文件以及两者都被添加根。我想要控制文件追加器日志,并且当我将级别值从OFF更改为其他值时,只有它应该工作。目前,如果更改级别 OFF,则停止两个追加器,并且无法在控制台上看到任

  • 问题内容: 使用杰克逊2.1,如何禁用错误消息似乎要禁用的消息? 我以为这只是世界上最简单的事情,但是该死了,它太迟了,我还没有找到一个简单的教程或任何特别明显的东西。?他们为什么要使它如此直观,然后使错误消息看起来如此简单? 尽管我 确实 喜欢该错误消息,但我的意思是,它比NPE更好。 我假设有一种使用注释的方法-但是我根本不希望将它们用于我正在做的简单工作! 问题答案: 我相信,您可以按班级或

  • 问题内容: 我创建了一个swings应用程序,并且GUI上有一个“开始”按钮。我希望每当我单击该“开始”按钮时,都应禁用开始按钮,并启用“停止”按钮。 为此,我在“开始”按钮的“ ActionPeformed(…)”方法中编写了以下代码 但是以上代码并未在GUI上产生所需的影响。 上面的代码对我想要做的正确吗? 它也不能与“ repaint()”一起使用。 编辑: 代码很长,所以我不能粘贴所有代码

  • 问题内容: 当我使用Alamofire两次发送GET请求时,我得到的响应是相同的,但是我期望得到不同的响应。我想知道这是否是由于缓存造成的,如果是这样,我想知道如何禁用它。 问题答案: 迅捷3,alamofire 4 我的解决方案是: 为Alamofire创建扩展: 并使用它:

  • 问题内容: 我正在创建应在Tomcat上运行的SOAP服务。 我正在为我的应用程序使用Spring Boot,类似于: 我的网络服务(示例): 问题: 每当我在webservice类中引发异常时,服务器上都会记录以下消息: ErrorPageFilter:由于响应已提交,因此无法转发到请求[/ services / MyWebservice]的错误页面。结果,响应可能具有错误的状态代码。如果您的应

  • 问题内容: 我有这个组成部分: 我希望在输入值为空时禁用按钮。但是上面的代码不起作用。它说: add-item.component.js:78未捕获的TypeError:无法读取未定义的属性“值” 指向。我在这里怎么做错了?我猜测执行方法时可能尚未创建ref 。如果是,那么解决方法是什么? 问题答案: 使用不是最佳实践,因为它直接读取DOM,最好使用React的。另外,您的按钮不会更改,因为该组件