-->

telnetlib Python的例子(telnetlib python example)

2019-06-25 09:09发布

所以我想用python文档给出的这个非常简单的例子:

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()

我的问题是,它挂在read_all结束()......它不打印任何东西了。 我以前从来没有,所以我试图让这个非常基本的例子继续之前的工作中使用这个模块。 顺便说一句,我使用的是Python 2.4,谢谢。

Answer 1:

好吧,我找到了解决办法。 在我进入LS和退出,我需要先指定终端类型。 添加

tn.write("vt100\n") 

我前“LS”解决了这一问题。



Answer 2:

如果你使用的是Windows,一定要加回车( \r换行字符前):

tn.write(user.encode('ascii') + "\r\n".encode('ascii'))


Answer 3:

我没有一个telnet服务器来测试反对,但我认为问题是,你是不读的服务器响应到提示符,在每个命令后你写。

PROMPT = ':~$'
tn = telnetlib.Telnet(HOST)
tn.read_until('login: ')
tn.write(user + '\n')
if password:
   tn.read_until('Password: ')
   tn.write(password + '\n')
tn.read_until(PROMPT)
tn.write('ls\n')
print tn.read_until(PROMPT)
tn.write('exit\n')

顺便说一句,telnetnetlib可能会非常棘手,事情取决于你的FTP服务器和环境设置上。 你可能会更好寻找到类似Pexpect的 ,以通过telnet登录自动化和用户交互。



Answer 4:

我知道这是晚后,但可以帮助别人。 我也挣扎得到这个权利,但这里是我的一段代码。 我的telnet会遵循一定的流程像它会要求loginID ,然后Password ,然后你必须等待在这里显示的特定字符串,这对于我而言是"DB>" ,那么你可以用命令和一切继续。 我的输出将被保存在"out" varible

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()

对于更多的变化和帮助,检查网站nullege



Answer 5:

我挣扎试图写入SynAccess电源板一段时间。 这是我做的:

import sys
import telnetlib
HOST = < your SynAccess switch ip address >
user = < user name >
password = < password >

tn = telnetlib.Telnet(HOST, 23, 5)
tn.write("login\r\n")
tn.write(user + "\r\n")
tn.write(password + "\r\n")
tn.write("rb 3\r\n") # this reboots plug 3
tn.write("rb 1\r\n") # this reboots plug 1
tn.write("logout\r\n")
tn.close


Answer 6:

使用Python 2.7或使用更高版本的“(”“),”在最后一行



文章来源: telnetlib python example