ssh4pyモジュール

pythonでファイル転送のようなことをやりたい。sshのラッパーのようなモジュールssh4pyがあったので、試してみる。

URL:http://www.keyphrene.com/products/4py/
チュートリアルhttp://blog.keyphrene.com/keyphrene/index.php/2008/09/18/13-scp

ちゃんとしたドキュメントがないのが不安。
ファイル転送のテストコードを作成。やりたいことは、接続先からファイルをscpで持ってくる。

import socket
from ssh4py import SSH2

HOSTNAME = "255.255.255.255"  #接続先IP
PORT = 22
LOGIN = "hoge"     #ユーザ名
PWD="hoge"    #パスワード

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOSTNAME, PORT))
sock.setblocking(1)
ssh = SSH2.Session()
ssh.startup(sock)
ssh.setPassword(LOGIN, PWD)

channel = ssh.SCPGet("~/testdata")
#fget = open("testdata", "w")

while True:
    data = channel.read(1024)
    if not data:
        break
    print data
#    fget.write(data)

#fget.close()
channel.close()

ssh.close()

実行するとフリーズする。ファイルの内容を読み込めているようだが、終端になってもwhile文を抜けてくれない。

(あとで詳しく調べる)