FabricでSFTP

このあいだparamikoを試してみましたが、Fabricでも同じことができそうだったので、こちらも試してみました。


getとかputをするだけなら簡単なんですが、同レベルにファイル一覧を取得する関数が無さそう。
内部的にはglobがあるのでそれを使えなくもないです。

# coding=utf-8
from contextlib import closing
from fabric.api import *
from fabric.sftp import SFTP

env.host_string = '**********'
env.port = 22
env.user = 'yuhei'
env.password = '*****'

# ファイル一覧をprint
print run('ls -ltra')

# もしくは
ftp = SFTP(env.host_string)
with closing(ftp) as ftp:
    for remote_file in  ftp.glob("/home/yuhei/*"):
        print remote_file

# ファイルを取得
get('remotefile', '/path/to/localfile')

# ファイルを送る
put('/path/to/localfile', '/path/to/remotefile')