如何将telnet作为文本文件打开,而不是二进制文件
所以我试图在telnet中使用read_until方法,但随后遇到了错误: Traceback (most recent call last): File "c:\Users\Desktop\7DTD Bot\test.py", line 44, in tn.read_until("Please enter password:") File "C:\Users\AppData\Local\Programs\Python\Python37\lib\telnetlib.py", line 302, in read_until i = self.cookedq.find(match) TypeError: argument should be integer or bytes-like object, not 'str' 我几乎确定这是因为telnet是作为二进制文件打开的,而不是作为文本文件打开的.这是我首先打开它的方式: HOST = config.ge
14 2023-10-15
编程技术问答社区
Python从Telnet读到空字符为止
我正在向我的服务器进行远程关注,该服务器用消息回答我,并在每条消息的末尾附加了无法读取的hex00(null字符).我尝试整个搜索,但似乎无法使它起作用,这是一个简单的例子: from telnetlib import Telnet connection = Telnet('localhost', 5001) connection.write('aa\n') connection.read_eager() 这将返回输出: 'Fail - Command aa not found.\n\r' 虽然应该有STH,例如: 'Fail - Command aa not found.\n\r\0' 有什么办法可以获取字符串字符的结尾?如果故意错过字符,我可以将字节作为输出吗? 00字符在那里: 解决方案 我尝试使用telnet从RS232 -TCP/IP转换器获取数据时偶然发现了同样的问题 - telnetlib会从消息中抑制每个0x00.正如弗雷德里克
4 2023-10-15
编程技术问答社区
Python telnetlib read_until返回切断的字符串
[Python telnetlib read_until recv问题] " read_until"函数返回用长命令切断字符串. 命令运行完美,但没有显示全文. 我怎样才能解决这个问题?请帮助. #我的代码 tn = telnetlib.Telnet(ip, 23, 5) prompt = ']# ' tn.write('echo "this is a long command for the test purpose... > test.txt"\n') print tn.read_until(prompt, 1) #调试输出 telnet(192.168.220.4,23):发送'echo"这是用于测试目的的长命令...> test.txt" \ n' telnet(192.168.220.4,23):recv'echo"这是l' telnet(192.168.220.4,23):用于测试目的的recv'ong命令...> te \ r \ x00
4 2023-10-15
编程技术问答社区
Python telnetlib:令人惊讶的问题
我正在使用python模块telnetlib创建telnet会话(带有国际象棋服务器),而且我遇到了一个我真的无法包围大脑的问题.以下代码效果很好: >>> f = login("my_server") #code for login(host) below. >>> f.read_very_eager() 这吐出了服务器通常在登录时打印的所有内容.但是,当我将其放入功能中时,然后将其调用: >>> def foo(): ... f = login("my_server") ... return f.read_very_eager() ... >>> foo() 我什么都没得到(空字符串).我可以检查登录是否正确执行,但是由于某些原因,我看不到文本.那么它在哪里被吞下? 非常感谢. 有关完整性,以下是登录(主机): def login(host, handle="guest", password=""): try: f = telne
4 2023-10-15
编程技术问答社区
如何在 python 中发送 telnetlib 控制 + c 命令
我正在尝试使用telnetlib库在Python中发送控制 + C命令.目前我在做 tn.write('^]') 但是上面的代码似乎不起作用.关于我应该使用什么的线索? 解决方案 尝试 ascii the control+c的acciii thatnet连接下图: - tn.write('\x03') 其他解决方案 ctrl+a = decimal 1 ctrl+b = decimal 2 ctrl+c = decimal 3 等等.. ctrl+x = decimal 24 ctrl+y = decimal 25 ctrl+z = decimal 26 escape = 27 etc 仍然,对于那些将来需要这个的人 箭头键为(3个字节,十进制) UP ARROW is 27,91,65 (ESC,'[',A) DOWN ARROW is 27,91,66 (ESC,'[',B) RIGHT ARROW is 27,91,67 (
2 2023-10-15
编程技术问答社区
Python Telnetlib read_until '#'或 '>',多个字符串的确定?
if (tn.read_until('>')): action1 else: action2 或 if (tn.read_until() == '>'): action1 else: action2 我只希望read_until()首先检查哪个所需的字符串,然后执行不同的操作. 还是有任何等效的方式? 解决方案 看>>> try: ... response = tn.read_until(">", timeout=120) #or whatever timeout you choose. ... except EOFError as e: ... print "Connection closed: %s" % e >>> if ">" in response: ... action1 ... else: ... action2 如果您想要多个不同的字符,则可以使用read_some() >>> while True: #r
4 2023-10-15
编程技术问答社区
Python的多个telnet会话
我需要构建一个脚本以获取尽可能多的主机的telnet输出,并将其保存到每个主机的单独文件中.脚本应作为守护程序运行. 目前,我具有一个函数,该函数封装了使用telnetlib的单个主机执行逻辑的功能,但我没有如何进行.我计划为每个主机打开一个过程(multiprocessing.Process),但我怀疑它将是一种资源浪费,必须存在更好的方法:) def TelnetLogSaver(hostname,ip,filename): # open files and telnet sessions f = open(filename,"a") tn = telnetlib.Telnet(ip,23,TIMEOUT) # login e = tn.read_until("Login: ") tn.write(USER+"\n") # and password e = tn.read_until("Passwor
4 2023-10-15
编程技术问答社区
在python中访问一个telnet会话
所以我需要访问telnet会话.更具体地说,JPL的erphemeris服务.我确切地知道我在命令提示符中需要做什么,但是我使用telnetlib软件包时遇到了麻烦. 这是我需要通过命令提示的步骤: telnet o horizons.jpl.nasa.gov 6775 DES=C/2012 X1; y E o H06 y 2013-Nov-7 9:00 2013-Nov-17 9:00 1d y 1,4,9,19,20,24 之后,我需要将其保存到文本文件中,或者简单地作为变量保存.我将稍后使用. 并遵循这些输入,逐步应使您获得我需要获取的确切信息 有建议吗? 解决方案 我将使用import telnetlib t = telnetlib.Telnet() t.open('horizons.jpl.nasa.gov', 6775) expect = ( ( r'Horizons>', 'DES=C/2012 X1\n' ),
6 2023-10-15
编程技术问答社区
用Python向远程机器应用程序发送命令
我想在Python中做以下操作. 连接到远程计算机在那里打开一个应用程序,然后将一些命令发送到此应用程序. 我的想法是通过Telnetlib和子过程进行. 我设法连接到机器并启动应用程序(单独使用Telnetlib),但我不确定如何继续. 有可能吗? P.S.我也愿意以另一种方式做到这一点,但我宁愿与python一起做. 预先感谢! 解决方案 您可以执行以下操作: child = pexpect.spawn('telnet 192.168.0.1') child.expect('[Ll]ogin') #you use the expected output, here will match either Login or login child.sendline('username') child.expect('[Pp]assword') child.sendline('password') child.expect('your remote prompt')
6 2023-10-04
编程技术问答社区
在python的telnetlib中检测关闭的连接
我正在使用python的我会注意到下次我尝试读取或写入它时关闭了连接,但希望有一种方法可以按需检测. 有没有一种方法可以在不影响实际连接的情况下发送某种"您是否存在"数据包? 解决方案 您应该能够以这种方式发送NOP: from telnetlib import IAC, NOP ... telnet_object.sock.sendall(IAC + NOP) 其他解决方案 我注意到,出于某种原因仅发送一次是不够的...我偶然地"发现"了,我有类似的东西: def check_alive(telnet_obj): try: if telnet_obj.sock: # this way I've taken care of problem if the .close() was called telnet_obj.sock.send(IAC+NOP) # notice the use of send inste
24 2023-07-03
编程技术问答社区
telnetlib python 示例
所以我尝试了python文档给出的这个非常简单的示例: import getpass import sys import telnetlib HOST = "" user = raw_input("Enter your remote account: ") password = getpass.getpass() tn = telnetlib.Telnet(HOST) tn.read_until("login: ") tn.write(user + "\n") if password: tn.read_until("Password: ") tn.write(password + "\n") tn.write("ls\n") tn.write("exit\n") print tn.read_all() 我的问题是它挂在read_all()的末尾...它没有打印出任何东西.我以前从未使用过这个模块,因此我试图在继续之前获得这个真正的基本示例.
18 2023-06-23
编程技术问答社区
不能用python并行化(线程)telnet连接
我有一个代码,它将使用TelentLib连接到多个路由器,在其中运行一些代码,最后将输出写入文件.它运行顺利. 但是,当我不得不访问大量路由器(+50)时,任务会消耗大量时间(代码连续运行,一次是路由器).然后,我想实现线程以加速过程. 这几乎是代码(只是它的片段): # We import the expect library for python import telnetlib import sys import csv import time import threading # --- Timers TimeLogin = 10 TelnetWriteTimeout = 1 TelnetReadTimeout = 2 # --- CSV FileCsv = "/home/lucas/Documents/script/file.csv" # --- Extras cr="\n" # variables IP = "A.B.C.D" User = ["user
54 2023-04-06
编程技术问答社区
telnetlib和 "buf = self.sock.recv(50)" 错误
我正在使用telnetlib进行简单的telnet脚本到瞻博网络交换机.以下是我的代码: import telnetlib HOST = raw_input("Enter host IP address: ") USER = raw_input("Enter Username: ") PWD = raw_input("Enter Password: ") TNT = telnetlib.Telnet(HOST, 23, 10) TNT.read_until("login:") TNT.write(USER.encode('ascii') + "\n") TNT.read_until("Password:") TNT.write(PWD.encode('ascii') + "\n") TNT.write("set cli screen-length 10000\nconfigure\nshow\nexit\n") print (TNT.read_
414 2023-01-31
编程技术问答社区
如何检查Telnet连接是否仍然建立? 使用telnetlib
我想检查使用 telnetlib 的连接是否仍然正常. 我这样做的方式是发送一个ls命令并检查答案,但我确信一定有一个更流畅的解决方案. 解决方案 我的想法来自这里,非常感谢他们,代码可能是这样的 def check_alive(telnet_object): try: if telnet_object.sock: telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP) telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP) telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP) return True except: pass 这个想法很简单: 如果 clo
94 2022-08-12
编程技术问答社区
Python Telnetlib read_until '#'或 '>',多字符串确定?
if (tn.read_until('>')): action1 else: action2 或 if (tn.read_until() == '>'): action1 else: action2 我只想要read_until()检查第一个所需的字符串,并执行不同的操作. 或者有等同的方式吗? 解决方案 查看 docs .读取直至希望预期字符串作为位置参数和可选超时.我会这样做: >>> try: ... response = tn.read_until(">", timeout=120) #or whatever timeout you choose. ... except EOFError as e: ... print "Connection closed: %s" % e >>> if ">" in response: ... action1 ... else: ... action2
3744 2022-07-17
编程技术问答社区