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

时间:2016-03-22 15:12:53

标签: python python-2.7 telnet file-processing telnetlib

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

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是否提供任何直接功能来实现此目的或以其他方式执行相同操作?

2 个答案:

答案 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