前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python远程登录

使用python远程登录

作者头像
py3study
发布2020-01-07 11:35:50
1.8K0
发布2020-01-07 11:35:50
举报
文章被收录于专栏:python3python3

最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下。

首先python的标准库中包含telnet,用起来也很方便,查看一下文档写了个小程序:

代码语言:javascript
复制
#!/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()

输出结果:

代码语言:javascript
复制
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写了一个小程序,实现刚才同样的功能:

代码语言:javascript
复制
#!/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()

输出结果:

代码语言:javascript
复制
.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/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档