telnetlib python示例

de1*_*7ed 10 python python-2.4 telnetlib

所以我正在尝试python docs给出的这个非常简单的例子:

import getpass
import sys
import telnetlib

HOST = "<HOST_IP>"
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()
Run Code Online (Sandbox Code Playgroud)

我的问题是它挂在read_all()的末尾...它不打印任何东西.我之前从未使用过这个模块,所以我试图让这个真正基本的例子继续下去.顺便说一下,我正在使用python 2.4谢谢.

de1*_*7ed 9

好的,我找到了解决方案.在我输入ls并退出之前,我需要先指定终端类型.添加

tn.write("vt100\n") 
Run Code Online (Sandbox Code Playgroud)

之前"ls"为我解决了问题.


小智 6

如果您使用的是Windows,请务必\r在新行字符前添加回车符():

tn.write(user.encode('ascii') + "\r\n".encode('ascii'))
Run Code Online (Sandbox Code Playgroud)


Anu*_*uti 5

我知道发帖已经晚了,但可能会对其他人有所帮助。我也努力做到这一点,但这是我的代码。我的 telnet 将遵循一定的流程,就像它所要求的loginID那样Password,然后您必须等待此处显示特定的字符串,对于我的情况来说,"DB>"您可以继续执行命令和所有操作。我的输出将保存在"out"变量中

import os,re,telnetlib
host = "10.xxx.xxx.xxx"
port = 23

telnet = telnetlib.Telnet()
telnet.open(host, port)
telnet.write('loginID\r\n')
telnet.write('Password\r\n')
out = telnet.read_until("DB>", 5)
telnet.write('show cable modem reg\r\n') #Mycommand
out = telnet.read_until("DB>", 5)
telnet.write('quit\r\n')
telnet.close()
Run Code Online (Sandbox Code Playgroud)

如需更多变化和帮助,请查看网站nullege