0

嗨,我是一个 tcl 人,试图在 Python 中进行日常活动,以便熟悉一门新语言并将 Python 与 tcl 进行比较。没有人想要 tcl 程序了 :)

好的,所以我提供了一个代码来自动化这个典型的活动,我会这样做以清除控制台行。

$ telnet 172.28.247.240
Trying 172.28.247.240...
Escape character is '^]'.
User Access Verification
Password: 
labc-f18-ts>en
Password: 
labc-f18-ts#clear line 66
[confirm]
 [OK]

我的代码如下所示:

import getpass
import sys
import telnetlib

a_tuple = [ ('172.28.247.240' , 66)]
HOST = j[0]
user = "admin"
password = "1234"

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("labc-f18-ts>") 
    tn.write ("en" +"\n")
    tn.read_until("labc-f18-ts#")
    tn.write("clear line %d" %j[1])
    tn.write("exit\n")
    sess_op = tn.read_all()
    print sess_op

但我似乎没有得到任何输出,也不知道它是否真的清除了线路 - 没有任何输出。请帮忙。

还有什么类似的东西pexpect我应该使用而不是我上面的东西吗?

4

1 回答 1

0
import telnetlib
# ...

a_tuple = [('172.28.247.240', 66)]
HOST = a_tuple[0] # do you mean to use 'a_tuple' instead of 'j'?
# ...

tn = telnetlib.Telnet(HOST[0], HOST[1]) # <-- pass the port, I don't think this accepts tuples of hostname/ip and port
# ...

你的部分代码应该像上面那样吗?

另外,在发送命令时,我通常会使用回车符 (\r) 而不是换行符 (\n)。一些主持人对此很挑剔。

于 2013-09-06T02:17:18.667 回答