使用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/
使用python远程登录的更多相关文章
- python远程登录服务器(paramiko模块安装和使用)
转自:http://www.jb51.net/article/46285.htm 一:简介 由paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器 ...
- python远程登录Paramiko模块的安装
最近做云平台的项目,需要使用python来管理所有的主机,我选择了paramiko.它跨平台的,linux和window都可以使用,pssh只支持linux. 1:安装gcc和python-devel ...
- python实现ssh远程登录
python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...
- [Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验
1. ssh客户端生成key $ Generating public/private rsa key pair. Enter file in which to save the key (/Users ...
- 使用paramiko模块远程登录并上传或下载文件
1.paramiko安装 1)安装PyCrypto2.6 for Python 2.7 64bit.地址:http://www.voidspace.org.uk/python/modules.shtm ...
- [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)
转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...
- Python远程连接模块-Telnet
Python远程连接模块-Telnet 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 虽然现在主流的python版本还是2.7,相信2020年python程序员都会偏向Python ...
- 服务器jupyter配置与ssh远程登录
jupyter 配置 首先安装jupyter,在anaconda套装中已包含,如果安装的是精简版的miniconda则通过conda install jupyter安装. 生成配置文件 jupyter ...
- Python远程linux执行命令
1.远程登录到linux上,使用到的模块paramiko #远程登陆操作系统 def ssh(sys_ip,username,password,cmds): try #创建ssh客户端 client ...
随机推荐
- 个人博客实现Archives查询小记
这两天正在做博客,刚刚遇到一个问题,就是需要在主页实现文档分类功能,即通过日期将文章进行按日期进行分类. 比如这样的: 我个人的想法是,查询所有文章的日期,然后将日期进行格式化,只留下年份和月份,然后 ...
- ASP.NET中Button控件的CommandName和CommandArgument属性用法
在Repeater中的使用: <asp:Repeater ID="rptActionList" runat="server" OnItemCommand= ...
- Winform开发常用控件之Checkbox和CheckedListBox
Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...
- js执行过程
正如我们了解的一样,当我们书写了JS程序之后,打开浏览器,我们的代码就可以开始运行了(当然保证你的代码没有问题,才能按照你的预期进行执行).刚才说的是JS执行的一个大的环境,今天我们学习一下,JS在解 ...
- c语言学习的第五天
#include<stdio.h> #include<stdbool.h> int main() { _Bool num=1; if (num==true); { printf ...
- 重拾C,一天一点点_10
来博客园今天刚好两年了,两年前开始学编程. 忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多.这两天调试服务器,遇到不少麻烦. 刚出去溜达了一下,晚上天凉了,现在手感觉凉的有点 ...
- ldd3-2 构造和运行模块:环境搭建2
之前搭建了Ubuntu10.04驱动开发环境,但是那儿的内核版本是2.6.32.27,总感觉无从下手的感觉,因为书上的内核版本是2.6.10,作为初学者不知道差异在哪里,或许不应该纠结这个问题吧. 昨 ...
- 第六节:宿主如何使用AppDomain
前面已经讨论了宿主以及宿主加载CLR的方式.同时还讨论了宿主如何告诉CLR创建和卸载AppDomain.为了使这些讨论更加具体,下面将描述一些常见的宿主和AppDomain使用情形.特别地,我要解释不 ...
- Python学习教程(learning Python)--1.1Python程序设计流程
Python程序设计与其他高级语言程序设计流程基本一致 step1 程序设计 step2 编写Python代码 setp3 Python语句语法纠错 step4 测试程 ...
- rspec的一些常见用法
这里讲了如何安装rspec,安装使用rspec. 下面介绍一下rspec中常见的使用方法. 下面是一个最简单的测试用例,判断true是不是等于true,should_be是旧的用法,新用法推荐使用ex ...