• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用Python进行SSH连接

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

概览

这篇文章how-to-use-the-pexpect-module-in-python介绍了Python中的pexpect模块,基于该模块可以做ssh、ftp等的自动化链接。

基于pexpect我们构建了pxssh类。使用pxssh模块,很容易通过ssh连接到其他服务器。

本文基于此处的官方文档:
http://pexpect.sourceforge.net/pxssh.html

什么是pxssh?

Pxssh基于pexpect。它的类扩展了pexpect.spawn以专门设置SSH连接。pxssh简单易用,我经常使用pxssh在python中进行ssh连接。

模块文档

打开终端并输入以下命令以获取有关该模块的帮助。


import pxssh
help(pxssh)

Help on module pxssh:

NAME
   pxssh

FILE
   /usr/lib/python2.7/dist-packages/pxssh.py

DESCRIPTION
   This class extends pexpect.spawn to specialize setting up SSH connections.
   This adds methods for login, logout, and expecting the shell prompt.
    
   $Id: pxssh.py 513 2008-02-09 18:26:13Z noah $

CLASSES
   pexpect.ExceptionPexpect(exceptions.Exception)
       ExceptionPxssh
   pexpect.spawn(__builtin__.object)
       pxssh
你也可以在这里看到帮助 http://pexpect.sourceforge.net/pxssh.html

方法和登录过程

Pxssh添加了登录、注销和等待shell提示的方法。

它做了各种棘手的事情以便在SSH登录过程中处理许多情况。

例如,如果会话是您的第一次登录,则pxssh会自动接受远程证书;或者如果你有公钥认证设置,那么pxssh将不会等待密码提示。

pxssh如何工作?

为了使其更加健壮,它将shell提示设置为比$或#更独特的东西。这适用于大多数Borne / Bash或Csh样式的shell。

示例

此示例在远程服务器上运行一些命令并打印结果。

首先,我们导入我们需要的模块。 (pxssh和getpass)

我们导入getpass模块,它会提示用户输入密码,而不会回显他们键入控制台的内容。


 
import pxssh
import getpass
try:                                                            
    s = pxssh.pxssh()
    hostname = raw_input('hostname: ')
    username = raw_input('username: ')
    password = getpass.getpass('password: ')
    s.login (hostname, username, password)
    s.sendline ('uptime')   # run a command
    s.prompt()             # match the prompt
    print s.before          # print everything before the prompt.
    s.sendline ('ls -l')
    s.prompt()
    print s.before
    s.sendline ('df')
    s.prompt()
    print s.before
    s.logout()
except pxssh.ExceptionPxssh, e:
    print "pxssh failed on login."
    print str(e)

在远程SSH服务器上运行命令

让我们再举一个例子。要运行命令(’uptime’)并打印输出,您需要执行以下操作:


import pxssh
s = pxssh.pxssh()
if not s.login ('localhost', 'myusername', 'mypassword'):
    print "SSH session failed on login."
    print str(s)
else:
    print "SSH session login successful"
    s.sendline ('uptime')
    s.prompt()         # match the prompt
    print s.before     # print everything before the prompt.
    s.logout()
    
#We can also execute multiple command like this:
s.sendline ('uptime;df -h')
想要了解pxssh的更多信息, 请阅读官方文档

 

参考资料

  • SSH Connection with Python

鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
在pandas中遍历DataFrame行发布时间:2022-05-14
下一篇:
使用pycharm进行交互式shell调试发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap