python telnetlib回显_python中telnetlib模块的使用

python下能支持telnet的模块telnetlib是内置模块,直接import就可以了,其基本的使用方法也是比较简单的。

#encoding=utf-8

defdo_telnet(Host, username, password, finish, commands):

importtelnetlib

'''''Telnet远程登录:Windows客户端连接Linux服务器'''

# 连接Telnet服务器

tn = telnetlib.Telnet(Host, port=23, timeout=10)

tn.set_debuglevel(2)

# 输入登录用户名

tn.read_until('login: ')

tn.write(username + '\n')

# 输入登录密码

tn.read_until('password: ')

tn.write(password + '\n')

# 登录完毕后执行命令

tn.read_until(finish)

forcommandincommands:

tn.write('%s\n'% command)

#执行完毕后,终止Telnet连接(或输入exit退出)

tn.read_until(finish)

tn.close() # tn.write('exit\n')

if__name__=='__main__':

# 配置选项

Host = &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pythontelnetlib模块可以用于与远程主机进行交互,包括发送命令和读取回显。要读取回显,可以使用telnetlib的read_until()方法,该方法会等待直到读取到指定的字符串或超时。例如,以下代码可以连接到远程主机并读取回显: ```python import telnetlib HOST = "example.com" user = "username" password = "password" tn = telnetlib.Telnet(HOST) tn.read_until(b"login: ") tn.write(user.encode('ascii') + b"\n") if password: tn.read_until(b"Password: ") tn.write(password.encode('ascii') + b"\n") tn.read_until(b"$ ") tn.write(b"ls\n") print(tn.read_until(b"$ ").decode('ascii')) ``` 在这个例子,我们连接到主机example.com并发送用户名和密码。然后,我们等待提示符"$ ",并发送命令"ls"。最后,我们读取回显并将其打印出来。注意,我们使用了encode()方法将字符串转换为字节串,并使用decode()方法将字节串转换为字符串。 ### 回答2: Pythontelnetlib模块是实现Telnet协议的标准库之一,可以用于连接Telnet服务器执行命令,并实现读写操作。在使用telnetlib模块进行连接操作时,通常会遇到回显读取问题。 回显是指当我们在终端上输入命令后,服务器会将该命令发送回终端上进行显示,以便用户确认已输入的命令是否正确。在telnetlib模块回显数据是通过read_until()函数读取的。 在使用read_until()函数读取回显数据之前,需要先设置telnet服务器的回显模式。通过set_option_negotiation_callback()函数进行设置: ``` def set_echo_mode(tn): def set_echo(option, remote): if option == telnetlib.ECHO: tn.sock.sendall(telnetlib.IAC + telnetlib.WONT + telnetlib.ECHO) tn.set_option_negotiation_callback(set_echo) ``` 上述代码,set_echo_mode()函数会为telnet对象tn设置回显模式,通过set_option_negotiation_callback()函数将回显关闭。 在设置回显模式之后,可以使用read_until()函数读取回显数据。read_until()函数可以读取回显数据直到指定字符或字符串出现为止。 ``` tn.write(b"ls\r\n") output = tn.read_until(b"\n") print(output.decode()) ``` 上述代码,write()函数向服务器发送了ls命令,read_until()函数则会等待服务器回显出命令输出并返回回显数据。最后使用decode()函数将回显数据转换为字符串类型,并打印出来。 除了read_until()函数以外,还可以使用read_very_eager()读取所有可用的回显数据,或者使用read_some()读取指定数量的回显数据。 总体来说,在使用pythontelnetlib模块进行回显读取时,需要先设置回显模式,然后使用read_until()、read_very_eager()或者read_some()等函数读取回显数据。这样,就可以轻松地实现Telnet客户端的回显读取功能。 ### 回答3: Pythontelnetlib库提供了许多使用telnet命令和交互式应用程序进行通信的功能。其一个常见的使用是从远程设备读取回显数据。 在使用telnetlib库时,使用Telnet类可以与远程设备(如路由器、交换机等)建立连接。我们可以利用read_until()方法读取来自远程设备的数据。 read_until()方法提供了一个字符串参数,该参数表示方法应该读取哪个字符串作为读取操作的结束标识符。如果在读取数据时遇到该字符串,则该函数将返回所有读取数据。如果读取操作超时,则函数将引发异常。以下是示例代码: import telnetlib tn = telnetlib.Telnet('192.168.1.1') # 先建立连接 tn.write(b'username\n') tn.write(b'password\n') tn.write(b'show version\n') data = tn.read_until(b'Username:') # 读取“Username:”结束标识符之前的所有数据 # 显示读取到的数据 print(data.decode('utf-8')) 在示例代码,首先使用Telnet类连接到远程设备。然后,将用户名、密码和show version命令写入设备。最后,使用read_until()方法读取所有来自远程设备的数据,直到读取到“Username:”字符串为止。使用decode('utf-8')方法将读取的数据从字节串转换为字符串,然后将其显示在控制台上。 此外,还可以在Telnet类的构造函数设置超时。如果读取操作花费的时间超过此超时时间,则函数将引发异常,否则将返回所有读取数据。 总之,Pythontelnetlib库可用于从远程设备读取回显数据。使用read_until()方法读取数据时,请设置适当的结束标识符,并在需要时设置超时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值