python ssh_使用Python进行SSH连接

概览

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

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

什么是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

方法和登录过程

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的更多信息, 请阅读官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值