Python使用Telnetlib模块实现telnet远程操作
来源:互联网 发布:淘宝客服外包价格 编辑:程序博客网 时间:2024/06/05 15:30
Python使用Telnetlib实现远程操作
Python内置了telnetlib模块,支持telnet远程操作,只要直接import就可以。
下面是一个实例(参考http://blog.csdn.net/five3/article/details/8099997):
其中port和timeout是可选的参数,而timeout的只是在初始化socket连接时起作用,而一旦连接成功后如果出现等待那就不会起作用了,比如使用read_until方式获取内容时返回的内容与指定的内容没有吻合,那么就会造成提示等待的情况,这时timeout是不会起作用的,而这个socket连接会一直保持着,永生不死。那么如何解决这个问题呢,其实还有一种比较原始的方法,就是使用sleep方法来代替read_until方法,这样就不会出现种情况,因为到点就会自己输入,最多也就是最后得不到想要的结果,但是这个方式很不稳定,兼容性也不好;另一种方法是使用线程来启动这个函数,然后对子线程进行超时设置,这样就可以达到间接控制这个telnet连接的目的了。
遇到的问题:
传递给Telnet方法的字符串都会被解一次码,所以如果你传递过去需要write的字符串是已经解码的unicode的话,那么就会报错的,所以在传递发送的字符串之前还是先编成utf-8为妥,用ascii编码也可以。
我用python3搭建了一个环境,telnet到嵌入式linux系统时,报如下错误信息:
TypeError: 'in <string>' requires string as left operand, not bytes
解决办法:
用encode()函数将字符串编码就可以了,比如tn.read_until('login: '.encode('utf-8')) 就可以解决。
又如(具体见https://docs.python.org/3/library/telnetlib.html):
import getpassimport telnetlibHOST = "localhost"user = input("Enter your remote account: ")password = getpass.getpass()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.write(b"ls\n")tn.write(b"exit\n")print(tn.read_all().decode('ascii'))
此外,还有一个pexpect的第三方模块可以支持telnet等一系列的协议连接,并支持交互式的通信。
参考博客:http://blog.csdn.net/five3/article/details/8099997
- Python使用Telnetlib模块实现telnet远程操作
- python中使用telnetlib模块远程实现连接
- python telnetlib 模块的使用
- Python的Telnet工具Telnetlib的使用
- python中telnetlib模块的使用
- 使用Python实现Telnet远程登录
- 使用Python实现Telnet远程登录
- 使用telnetlib来执行telnet命令
- python 爬取西刺免费代理ip 并使用telnetlib.Telnet验证是否有效
- python用parammiko模块实现linux的远程操作
- 使用golang实现telnet远程登录
- Python使用Paramiko模块实现远程文件拷贝
- telnet远程登录操作
- python 3.4.2 telnetlib
- telnet实现远程连接
- DOS批处理下操作telnet实现自动远程登录操作
- Python模块paramiko:操作远程服务器
- python使用telnet实现弱密码登录
- spring boot系列教程2--从helloworld开始
- 什么是脏数据,脏读,不可重复读,幻觉读?
- (二)大数据处理:基于MapReduce的大图划分算法综述
- 【OpenVswitch源码分析之一】背景
- 1.5 对象流与序列化
- Python使用Telnetlib模块实现telnet远程操作
- web前端总结(二)
- rtmp协议数据包分析(2)
- eclipse新建java文件时自动生成注释
- Ubuntu 17.04 安装 OpenAirInterface (OAI)教程
- java中如何实现文件上传
- HashMap的工作原理
- application.properties常用配置
- ください的一种用法。