conta's diary

思ったこと、やったことを書いてます。 twitter: @conta_

pythonのpexpectでssh

pythonSSHとか使いたい!ってことで使ってみました
昔paramikoというモジュールを使っていたのですが、こっちのほうが個人で気に使いやすかったです

pexpectはexpect風な対話ができるPythonモジュール
一緒にpxsshというsshが簡単にできるモジュールがついてくるらしい
ということで、こっちを使ってみた

*ここを参考
pexpect: http://www.noah.org/wiki/pexpect
pxssh: http://pexpect.sourceforge.net/pxssh.html

インストール

pipからインストール

pip install pexpect

ソース

ソースはこんな感じ

'''
Created on Jan 10, 2012

@author: ogata
'''

import pxssh

def main():
    
    try:                                                            
        s = pxssh.pxssh()
        hostname = 'ホスト'
        username = 'ユーザー'
        password = 'パスワード'
        s.login (hostname, username, password)
        
        s.sendline ('cd temp/test')
        s.prompt()
        
        s.sendline ('ls -l')
        s.prompt()
        print s.before
        
        s.sendline ('cat test.txt')
        s.prompt()
        print s.before
        
        s.sendline ('rm -f test.txt')
        s.prompt()
        print 'debug: file deleted!'
        
        s.logout()
        
    except pxssh.ExceptionPxssh, e:
        print "pxssh failed on login."
        print str(e)

if __name__ == '__main__':
    print "-- main --"
    main()
    print "-- end --"

実行結果

-- main --
ls -l
total 4
-rw-r--r-- 1 root root 3 Jan 11 10:17 test.txt

cat test.txt
this is a pen.

debug: file deleted!
-- end --

ちゃんと動きました!