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

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

[python] view plaincopy
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import telnetlib
  4. host = "127.0.0.1"
  5. userName = 'root'
  6. password = '123456'
  7. enter = '\n'
  8. t = telnetlib.Telnet(host)
  9. t.read_until("login: ",1)
  10. t.write(userName + enter)
  11. t.read_until("Password: ",1)
  12. t.write(password + enter)
  13. t.write("ls"+enter)
  14. t.write("exit"+enter)
  15. print t.read_all()

输出结果:

[plain] view plaincopy
  1. Last login: Wed Nov  2 14:51:36 on console
  2. shi-kefumatoiMac:~ root# .CFUserTextEncoding    .subversion     Library
  3. .forward        .viminfo        nat.sh
  4. .sh_history     .vimrc          noc
  5. shi-kefumatoiMac:~ root# logout

程序很简单,登录自己的机器,执行ls命令,然后输出结果。

telnet很好用,但是总是有人喜欢更强大更好用的程序,于是就有了pexpect,pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。

看了写资料,也用pexpect写了一个小程序,实现刚才同样的功能:

[python] view plaincopy
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import pexpect
  4. address = '127.0.0.1'
  5. userName = 'root'
  6. password = '123456'
  7. cmd = 'telnet ' + address
  8. prompt = '[$#>]'
  9. child = pexpect.spawn(cmd)
  10. index = child.expect(['login',pexpect.EOF,pexpect.TIMEOUT],timeout=1)
  11. if index == 0:
  12. child.sendline(userName)
  13. index = child.expect('Password',timeout=1)
  14. child.sendline(password)
  15. child.expect(prompt,timeout=1)
  16. child.sendline('ls')
  17. child.expect('ls',timeout=1)
  18. child.expect(prompt,timeout=1)
  19. print child.before
  20. else:
  21. print 'expect "login",but get EOF or TIMEOUT'
  22. child.close()

输出结果:

[plain] view plaincopy
  1. .CFUserTextEncoding .subversion     Library
  2. .forward        .viminfo        nat.sh
  3. .sh_history     .vimrc          noc
  4. 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远程登录相关推荐

  1. python远程登录linux命令,Python+requests通过paramiko远程登录Linux执行sh命令

    在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令.Python的paramiko模块, 遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, ...

  2. python远程登录并执行命令_Python - 远程SSH执行命令

    前言 在自动化运维中经常需要通过ssh批量操作服务器,利用Python的paramiko模块就快速完成工作. 安装 pip install paramiko 使用SSHClient类 SSHClien ...

  3. python实现远程登录_python远程登录代码

    在 python 中有一个 telnetlib,它的作用就是建立一个通到主机的 telnet连线实体, 然后向主机传送命令 (就像用键盘输入一样 )并从该连线接收数据.利用它, 我们可以把示范 1的所 ...

  4. python telnetlib执行命令_使用python Telnet远程登录执行程序的方法

    如下所示: # -*-coding:utf-8 -*- def do_telnet(Host, username, password, finish, commands): import telnet ...

  5. python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  6. Linux学习(十五)---Python定制篇---apt软件管理和远程登录

    文章目录 一.apt介绍 二.Ubuntu 软件操作的相关命令 三.更新 Ubuntu 软件下载地址 3.1 原理示意图 3.2 寻找国内镜像源 3.3 备份 Ubuntu 默认的源地址 3.4 更新 ...

  7. python使用telnet远程连接linux系统读取信息_Linux服务笔记之一:Telnet 远程登录

    最近,在学习Linux服务器中的搭建,感觉上非常强大.下面,我写下在Linux下搭建Telnet服务来远程管理设备--这也是一种古老的远程管理方 式这一. 其中,Telnet服务也是基于C/S模式的. ...

  8. 三周第三次课(11月1日) 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    2019独角兽企业重金招聘Python工程师标准>>> 3.7 su命令 su - 用户名 切换用户(加-彻底切换用户包括一些配置文件) 不加 - 的话 还会在root 家目录下 加 ...

  9. Linux学习(二)--远程登录Linux系统

    文章目录 Linux学习--远程登录Linux系统 一.明白为什么我们需要远程登入Linux系统? 二 .Xshell的介绍 三.Xftp5介绍 Linux学习–远程登录Linux系统 一.明白为什么 ...

最新文章

  1. 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题16-20题)...
  2. bash环境变量的相关内容
  3. python流程控制-python 流程控制语句
  4. 小米平板2更新bios版本_【军团战争5.25】新版本更新预告第一弹,2级兵3次升级!...
  5. android 补间动画有停顿,Android动画原理分析(一)----补间动画
  6. 【AI视野·今日CV 计算机视觉论文速览 第229期】Thu, 1 Jul 2021
  7. WordPress 后台评论如何自定义搜索条件
  8. 解决华硕FX80G* Fn+F5或其他功能键切换不显示问题
  9. C语言编程题:求一元二次方程组的根
  10. 开源众包-项目大厅数据爬取
  11. 计算机操作系统复习题
  12. laypage分页java例子_laypage分页控件使用实例详解
  13. 计算机无法关闭密码保护,Win7密码保护共享关闭不了怎么办?密码保护共享关不掉的解决方法...
  14. 新华文娱数据发布年度白皮书 口碑成观影首要驱动力
  15. 服务器图片显示小方块,高手帮忙了!!验证码跟着敲好之后 服务器打开一个小方块里面空的!在线等!!!...
  16. HTTP各版本的特点(1.0/1.1/2.0/3.0)
  17. 塑形管理小程序开发(一)-源头追溯
  18. Windows10数字权利
  19. LINUX安装kafka步骤
  20. C语言必知专业术语,掌握C语言的必知要点

热门文章

  1. C#操作HttpClient工具类库
  2. sqlhelper中事务的简单用法(初学者)
  3. vb treeview 展开子节点_C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形
  4. linux git删除的文件怎么还原,从Git仓库中恢复已删除的分支、文件或丢失的commit...
  5. mysql 自定义函数之判断
  6. nginx修改upstream不重启的方法(ngx_http_dyups_module模块)
  7. https://zeplin.io/ 设计图标注及切图
  8. phpstudy-5.6.27-nts  安装redis扩展
  9. [LeetCode][Java] Unique Paths II
  10. 他毕业两年,博客一年,时间