Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1271948
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2011-09-13 10:47:02

1.安装
(1)使用下面命令获得最新版本的ssh4py安装包
   git clone git://github.com/wallunit/ssh4py
(2)解压ssh4py后使用下面命令进行安装:
cd ssh4py
python setup.py build
python setup.py install
2.开始使用
(1)为了使用libssh2,你必须建立一个在您自己的的低级套接字并把它传递到一个新的Session对象。
 
#encoding: utf-8
import socket
import libssh2  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('exmaple.com', 22))  
session = libssh2.Session()
session.startup(sock)
#还需要使用基本的密码进行验证登陆
session.userauth_password(username, password)
#现在可以开始使用它了
channel = session.channel()
channel.execute('ls /etc/debian_version')
channel.wait_closed()  
if channel.get_exit_status() == 0:  
    print "It's a Debian system"
else:  
    print "It's not a Debian system"
 
(2)假如你想获得执行命令的输出
#encoding: utf-8
import socket
import libssh2  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('exmaple.com', 22))  
session = libssh2.Session()
session.startup(sock)
#还需要使用基本的密码进行验证登陆
session.userauth_password(username, password)
channel = session.channel()
channel.execute('ls -l')  
stdout = []
stderr = []  
while not channel.eof: 
    data = channel.read(1024) 
    if data:  
        stdout.append(data)  
    data = channel.read(1024, libssh2.STDERR)  
    if data:   
        stderr.append(data)
print ''.join(stdout)
print ''.join(stderr)
 
(3)使用中可能遇到的问题
这里我们都会发现,使用exec_command('cd dirname')时并不会切换目录,
execute_command() 是a single session,每次执行完后都要回到缺省目录。
所以可以 .execute_command('cd  /var; pwd')。
 
阅读(2668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~