使用python远程登录
最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下。
首先python的标准库中包含telnet,用起来也很方便,查看一下文档写了个小程序:
- #!/usr/bin/env python
- #coding=utf-8
- import telnetlib
- host = "127.0.0.1"
- userName = 'root'
- password = '123456'
- enter = '\n'
- t = telnetlib.Telnet(host)
- t.read_until("login: ",1)
- t.write(userName + enter)
- t.read_until("Password: ",1)
- t.write(password + enter)
- t.write("ls"+enter)
- t.write("exit"+enter)
- print t.read_all()
输出结果:
- Last login: Wed Nov 2 14:51:36 on console
- shi-kefumatoiMac:~ root# .CFUserTextEncoding .subversion Library
- .forward .viminfo nat.sh
- .sh_history .vimrc noc
- shi-kefumatoiMac:~ root# logout
程序很简单,登录自己的机器,执行ls命令,然后输出结果。
telnet很好用,但是总是有人喜欢更强大更好用的程序,于是就有了pexpect,pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。
看了写资料,也用pexpect写了一个小程序,实现刚才同样的功能:
- #!/usr/bin/env python
- #coding=utf-8
- import pexpect
- address = '127.0.0.1'
- userName = 'root'
- password = '123456'
- cmd = 'telnet ' + address
- prompt = '[$#>]'
- child = pexpect.spawn(cmd)
- index = child.expect(['login',pexpect.EOF,pexpect.TIMEOUT],timeout=1)
- if index == 0:
- child.sendline(userName)
- index = child.expect('Password',timeout=1)
- child.sendline(password)
- child.expect(prompt,timeout=1)
- child.sendline('ls')
- child.expect('ls',timeout=1)
- child.expect(prompt,timeout=1)
- print child.before
- else:
- print 'expect "login",but get EOF or TIMEOUT'
- child.close()
输出结果:
- .CFUserTextEncoding .subversion Library
- .forward .viminfo nat.sh
- .sh_history .vimrc noc
- shi-kefumatoiMac:~ root
当然,这个程序只是pexpect的一个实例程序,简单介绍的它的简单用法,还不足以说明它t的强大。
参考资料:
python文档:http://docs.python.org/library/telnetlib.html
IBM developerWorks: http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect1/
http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/
转载于:https://www.cnblogs.com/jxrichar/p/3916291.html
使用python远程登录相关推荐
- python远程登录linux命令,Python+requests通过paramiko远程登录Linux执行sh命令
在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令.Python的paramiko模块, 遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, ...
- python远程登录并执行命令_Python - 远程SSH执行命令
前言 在自动化运维中经常需要通过ssh批量操作服务器,利用Python的paramiko模块就快速完成工作. 安装 pip install paramiko 使用SSHClient类 SSHClien ...
- python实现远程登录_python远程登录代码
在 python 中有一个 telnetlib,它的作用就是建立一个通到主机的 telnet连线实体, 然后向主机传送命令 (就像用键盘输入一样 )并从该连线接收数据.利用它, 我们可以把示范 1的所 ...
- python telnetlib执行命令_使用python Telnet远程登录执行程序的方法
如下所示: # -*-coding:utf-8 -*- def do_telnet(Host, username, password, finish, commands): import telnet ...
- python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...
- Linux学习(十五)---Python定制篇---apt软件管理和远程登录
文章目录 一.apt介绍 二.Ubuntu 软件操作的相关命令 三.更新 Ubuntu 软件下载地址 3.1 原理示意图 3.2 寻找国内镜像源 3.3 备份 Ubuntu 默认的源地址 3.4 更新 ...
- python使用telnet远程连接linux系统读取信息_Linux服务笔记之一:Telnet 远程登录
最近,在学习Linux服务器中的搭建,感觉上非常强大.下面,我写下在Linux下搭建Telnet服务来远程管理设备--这也是一种古老的远程管理方 式这一. 其中,Telnet服务也是基于C/S模式的. ...
- 三周第三次课(11月1日) 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
2019独角兽企业重金招聘Python工程师标准>>> 3.7 su命令 su - 用户名 切换用户(加-彻底切换用户包括一些配置文件) 不加 - 的话 还会在root 家目录下 加 ...
- Linux学习(二)--远程登录Linux系统
文章目录 Linux学习--远程登录Linux系统 一.明白为什么我们需要远程登入Linux系统? 二 .Xshell的介绍 三.Xftp5介绍 Linux学习–远程登录Linux系统 一.明白为什么 ...
最新文章
- 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题16-20题)...
- bash环境变量的相关内容
- python流程控制-python 流程控制语句
- 小米平板2更新bios版本_【军团战争5.25】新版本更新预告第一弹,2级兵3次升级!...
- android 补间动画有停顿,Android动画原理分析(一)----补间动画
- 【AI视野·今日CV 计算机视觉论文速览 第229期】Thu, 1 Jul 2021
- WordPress 后台评论如何自定义搜索条件
- 解决华硕FX80G* Fn+F5或其他功能键切换不显示问题
- C语言编程题:求一元二次方程组的根
- 开源众包-项目大厅数据爬取
- 计算机操作系统复习题
- laypage分页java例子_laypage分页控件使用实例详解
- 计算机无法关闭密码保护,Win7密码保护共享关闭不了怎么办?密码保护共享关不掉的解决方法...
- 新华文娱数据发布年度白皮书 口碑成观影首要驱动力
- 服务器图片显示小方块,高手帮忙了!!验证码跟着敲好之后 服务器打开一个小方块里面空的!在线等!!!...
- HTTP各版本的特点(1.0/1.1/2.0/3.0)
- 塑形管理小程序开发(一)-源头追溯
- Windows10数字权利
- LINUX安装kafka步骤
- C语言必知专业术语,掌握C语言的必知要点
热门文章
- C#操作HttpClient工具类库
- sqlhelper中事务的简单用法(初学者)
- vb treeview 展开子节点_C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形
- linux git删除的文件怎么还原,从Git仓库中恢复已删除的分支、文件或丢失的commit...
- mysql 自定义函数之判断
- nginx修改upstream不重启的方法(ngx_http_dyups_module模块)
- https://zeplin.io/ 设计图标注及切图
- phpstudy-5.6.27-nts 安装redis扩展
- [LeetCode][Java] Unique Paths II
- 他毕业两年,博客一年,时间