`
小麦麦子
  • 浏览: 30624 次
文章分类
社区版块
存档分类
最新评论

pexpect库学习之ssh专用类详解

阅读更多

 

本文和大家分享的是ssh专用类,在pexpect库中为我们提供了一个ssh专用类,这个专用类用于登录远程的主机,它也是spawn类的子类,并且ssh专用类中还添加了loginlogout,这两个方法主要用于登录远程主机以及从远程主机中注销,并且为建立ssh连接制定了一些功能,在第一次连接时可以自动接受远程认证,而不出现yes或者no的提示,可以自动应用公钥登录而不用输入密码,这就是ssh专用类的使用方法,下面我们具体来看pxssh类,对于pxssh类,它的构造方法参数除无cmd参数其余与spawn类相同,我们在前面都做了相应的介绍,所以在这里就不在单独介绍了,在这个类中,第一个主要的方法就是login,这个login方法用于通过gis命令来远程登录主机的,所以它的主要参数包括server也就是要登录的服务器的名称或者是ip地址,username是要登录远程主机的用户名,password就是要登录远程主机的用户名所对应的密码是什么,其余的这些参数大多数就是用于一些指定原来的命令提示符以及指定新的命令提示符功能,同时这里面还有一些其他的参数,比如终端的类型以及登录时候的超时,登录的端口一般我们设为none,以表示为默认端口,还有是自动的提前符的重置,也就是命令提示符设置为true为自动重置,默认的也是自动重置,这就是login方法的使用,logout很简单它不需要提供任何参数就可以直接从远程主机中注销退出。对于pxssh类它还具有一个prompt方法,这个方法实际上是spawn类的一个包装,就是通过这个方法来进行匹配命令提示符,用before来进行查看结果的。

  我们前面讲到spawn类的时候,我们匹配了一部分内容,然后匹配内容的前面部分就是保存在before这个属性中的,而这里我们匹配的命令提示符,所以命令提示符出现了以前的信息都会在before中进行查看。

  下面一个方法是set_unique_prompt,这个方法是用于设置一个命令提示符的,也就是为我们远程登录的ssh命令设置一个远程的命令提示符,那么它实际上是login方法通过调用它改变提示符,也就是我们刚才讲到的那个地方默认为true来修改命令提示符,对于pxssh类它还有以下几个属性,第一个属性PROMPT,就是登录远程的命令提示符,用于prompt方法匹配,然后是options,就是代表pxssh类它的一些相关选项的字典。也就是我们在这个地方设置一些选项以后,它会保存在选项字典中。最后一个属性是force_password,也就是当我们设置它为true的时候,强制通过密码登录远程主机。

  在pxssh类这个模块中,同时还进行了一个ExceptionPxssh错误,它实际上是一个异常,下面我们可以来看使用pxssh类来登录远程主机的实例。

  首先我们启动一个用ssh登录的虚拟机,当他启动完成后,我们就可以在另一个虚拟机中来进行登录。

  将pxssh这个类导入,然后我们来导入一个用于输入密码的模块,首先我们定义要登录的主机,那么这台虚拟机他的ip地址为192.168.1.22,所以我们在这里定义它为192.168.1.22,然后定义远程的登录用户名为root,我们需要一个密码,输入命令来获取密码,然后我们来实例化pxssh这个类,实例化的时候,我们不提供任何参数。调用这个类的login方法来进行登录,登录的文件名为hostname,登录的用户名为user,登录的密码就是pw。然后返回True,就表明为成功,然后现在我们向主机发送一些命令。



 

  然后当它完全启动后,首先我们要导入相应的模块,将pxssh这个类导入,然后我们来导入一个用于输入密码的模块,首先我们定义要登录的主机,那么这台虚拟机他的ip地址为192.168.1.22,所以我们在这里定义它为192.168.1.22,然后定义远程的登录用户名为root,我们需要一个密码,输入命令来获取密码,然后我们来实例化pxssh这个类,实例化的时候,我们不提供任何参数。调用这个类的login方法来进行登录,登录的文件名为hostname,登录的用户名为user,登录的密码就是pw。然后返回True,就表明为成功,然后现在我们向主机发送一些命令让它执行。



 

  同样的我们用“sendline”方法,用ls这个命令,然后调用它的prompt的方法来进行匹配,也就是匹配命令提示符,这个我们可以通过print这个属性来进行查看,可以看到远程的在主机上一些相应的信息,那么我们要看到它的中文信息也需要进行解码。



 

  输入命令,进行解码然后我们可以看到它有哪些文件名以及相关的信息。



 

  比如我们执行df的命令查看是什么情况,然后调用prompt方法,进行匹配,匹配完之后再次调用它的属性before,就可以查看到磁盘的使用情况,当我们发送完命令之后就要调用logout来进行退出登录,这样我们就退出了远程的登录,那么其实我们还可以通过它来进行关闭远程。



 

  下面我们在另外一个终端中来进行测试,首先我们还是要导入相应的库,导入类pxssh,然后导入getpass这个模块,定义主机和用户名,然后获取密码,然后初始化这个类,这个时候也要提供一些参数,登录主机,然后返回为true就代表登录成功,此时我们可以像它发送一个关键的命令“poweroff”,就可以看到虚拟机正在关闭。

 

 

原文链接:http://www.maiziedu.com/wiki/library/ssh/

  • 大小: 76.7 KB
  • 大小: 102.8 KB
  • 大小: 54.2 KB
  • 大小: 68 KB
  • 大小: 90 KB
分享到:
评论

相关推荐

    pexpect-3.3.tar.gz

    《Python模块pexpect详解》 在Python编程领域,pexpect是一个强大的自动化工具,它使得与交互式应用程序进行通信变得简单。这个模块的核心功能是能够启动一个子进程,并控制它的输入和输出,等待预期的输出,这正是...

    pexpect模块

    **Pexpect模块详解** 在Python编程环境中,`pexpect`是一个强大的库,它允许程序控制其他应用程序,特别是那些通过标准输入/输出进行交互的程序。这个模块特别适用于自动化那些需要用户交互的任务,如SSH登录、FTP...

    Python Pexpect库的简单使用方法

    ### Python Pexpect库详解 #### 一、引言 Pexpect 是一个用于自动化交互式命令行应用程序的 Python 库。它能模拟用户的行为,通过控制命令行应用来完成任务,如远程登录、文件传输等。Pexpect 的核心功能是产生...

    python之pexpect实现自动交互的例子

    Python的pexpect库是一个强大的工具,用于自动化与命令行程序的交互。它通过正则表达式匹配来识别程序的输出,并根据匹配的结果发送相应的输入,使得自动化脚本能够模拟人类用户与命令行界面的交互。本文将详细介绍...

    使用python的pexpect模块,实现远程免密登录的示例

    ### 使用Python的pexpect模块实现远程免密登录详解 在自动化运维、批量处理以及远程管理等领域,经常需要通过脚本来实现远程登录或操作。而在这个过程中,自动化输入密码成为了一个关键的技术难题。针对这一问题,...

    网工Python库.pdf

    以下是一些网络工程师常用的Python库及其功能详解: 1. **数据格式与处理库**: - `json`:Python内置库,用于在JSON(JavaScript Object Notation)数据与Python的数据结构之间进行转换,广泛应用于Web服务接口。...

    详解用Python实现自动化监控远程服务器

    Python作为一种广泛使用的编程语言,凭借其简洁的语法和强大的第三方库支持,成为实施服务器监控的理想选择之一。本文将详细介绍如何利用Python来实现远程服务器的自动化监控,并通过具体示例代码进行演示。 #### ...

    winpexpect 1.6

    pexpect 是一个用于自动化交互式应用程序的库,如 SSH、telnet、FTP 等。它使得在 Python 脚本中控制和自动执行这些程序变得简单。winpexpect 1.6 版本是针对 Windows 操作系统的优化,解决了在 Windows 上使用 ...

    Python实现的远程文件自动打包并下载功能示例

    在Python中,可以通过第三方库`pexpect`来调用系统级别的SSH和SCP命令,从而实现远程文件的打包和下载。 #### 三、具体实现 ##### 1. 环境准备 首先确保本地环境已经安装了`pexpect`库,可以通过pip进行安装: `...

    通过python连接Linux命令行代码实例

    利用`pexpect`库的强大功能,我们可以轻松地管理复杂的SSH会话流程,并通过定义预期模式来应对各种不同的场景。这对于提高工作效率和减少人工干预具有重要意义。希望这篇详细的文章能帮助读者更好地理解和运用Python...

    python模块下载及安装方法.docx

    44. **Paramiko**:一个SSH协议库,支持SFTP等功能。 45. **Pygame**:用于游戏开发的库。 46. **Psyco**:一个Python解释器优化器,可以加速Python代码的执行速度。 #### 安装方法 对于上述提到的各种Python模块...

    ansible自动化

    - **单核CPU服务器上的问题**:在单核CPU的服务器上使用时,可能会遇到与`pexpect`库相关的错误。解决方法是将`pexpect`版本回退至2.4。 #### 五、版本历史与文档管理 - **版本控制**:文档中详细记录了每个版本的...

    Downloads.7z

    此外,还可以结合Pexpect这样的库(在Python中)或Expect(在Unix-like系统中)来自动化控制 PuTTY 的交互过程,实现更复杂的测试场景。 在安全方面,PuTTY提供了强加密机制,确保了数据在传输过程中的安全性。GPG...

    开源跳板机

    在早期版本中,该开源跳板机使用了`pexpect`进行模拟登录,而在新版本中则采用了`paramiko`这一Python库来实现SSH协议。这种改变带来了更高效、更稳定的连接体验,同时也确保了数据传输的安全性。 - **1.2 新增使用...

Global site tag (gtag.js) - Google Analytics