我有以下程序,我将终端上的输出重定向到文本文件:
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")
我想将此文件的文本内容复制到缓冲区变量并进行处理。也就是说,我不想从控制台/终端读取。我只想将输出重定向到文本文件,然后从文本文件中读取。 telnetlib
是否提供任何直接功能来实现此目的或以其他方式执行相同操作?
答案 0 :(得分:2)
TELNET协议或多或少是远程终端仿真。它没有提供文件传输功能,因为其他协议处理它。这意味着一旦您在远程系统上编写了文件,就必须使用cat
显示该文件并存储cat
命令的输出。
或者,您可以使用用于文件传输的协议(如FTP,RSYNC,SFTP,FTPS等)来下载远程文件。只需使用远程系统上可访问的那个。
答案 1 :(得分:1)
编辑此代码从远程主机上的本地文件中读取 请尝试以下代码,假设在执行命令后,您将获得以下字符串:“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