如何使用 python 通过 telnet 会话将文本文件的内容复制到变量

How to copy contents of a text file to a variable over a telnet session using python

我有以下程序,我将终端上的输出重定向到文本文件:

import telnetlib
import time
import string


tn = telnetlib.Telnet("192.168.1.102")
print "Attempting Telnet connection...."
tn.read_until("login: ")
tn.write("root1\n")
time.sleep(1)
tn.read_until("Password:")
tn.write("\n")
tn.write("\n")
tn.read_until("root1@mypc:~$")
tn.write("su\n")
tn.read_until("root@mypc:/home/root1")
tn.write("\n")
print "Telnet logged in successfully....\n"
tn.write("head /proc/meminfo > /home/a.txt")
tn.write("\n")

我想将此文件的文本内容复制到缓冲区变量并进行处理。也就是说,我不想从 console/terminal 读取。我只想将输出重定向到一个文本文件,然后从文本文件中读取。 telnetlib 是否提供任何直接功能来实现此目的或任何替代方法?

编辑此代码从远程主机上的本地文件中读取 请尝试下面的代码,假设在您执行命令后,您会得到以下字符串:"root@mypc:/home/root1"

tn.write("cat /home/a.txt")
tn.write("\n")
data = '' 
while data.find("root@mypc:/home/root1") == -1:
    data = tn.read_very_eager()
print data

TELNET 协议或多或少是一种远程终端仿真。它不提供文件传输功能,因为其他协议处理该功能。这意味着一旦您在远程系统上写入文件,您将必须使用 cat 显示它并存储 cat 命令的输出。

或者,您可以使用用于文件传输的协议,如 FTP、RSYNC、SFTP、FTPS 等来下载远程文件。只需使用可在您的远程系统上访问的那个。