PythonでSSHとかSCPとかを自動化

ちょいとSCPでファイルを取ってきたり、置いたりしないといけなかったので。

Pexpect

Pexpectというライブラリを利用。
コマンドを自動化できる。一番良いのはpasswordを聞かれるのを自動で答えてくれること。

SCP

SCPのサンプルコード。らくちん。

import pexpect

SERVER = "www.rokujyouhitoma.com"
USER = "rokujyouhitoma"
SOMEDIR = "~"
PASSWORD = "bar_password"
UPLOADDIR = "baz_dir"

if __name__ == "__main__":
    scp = pexpect.spawn('scp -r %s@%s:%s %s' % (USER, SERVER, SOMEDIR, UPLOADDIR))
    scp.expect('.ssword:*')
    scp.sendline(PASSWORD)
    scp.interact()

ま、問題はこんな危険なコードが流失したらだなぁー。

SSH

同様にSSHのサンプルコードを。

import pexpect

SERVER = "www.rokujyouhitoma.com"
USER = "rokujyouhitoma"
PASSWORD = "bar_password"

if __name__ == "__main__":
    foo = pexpect.spawn('ssh %s@%s' % (USER, SERVER))
    foo.expect('.*ssword:')
    scp.sendline(PASSWORD)
    foo.interact()


重要なことなのでもう一度。危険だから、使い方には注意して下さい。


ま、あれだな。引数でパスワードを取るように変えるしか考えつかないけど・・・。

追記

「pitを使えばパスワードを隠蔽化できるよ」ってTwitterで教えてもらいました。後で試す。

公式