pexpectでinteract()を使用する記事を結構みるけど、そのまま使ったらクラッシュしてしまったので、interactは使えない?みたい。
interactの代わりにexpect(pexpect.EOF)を使うとうまくいく。
import pexpect SERVER = "local" USER = "root" PASSWORD = "Rabbit!" REMOTEDIR = "~/" LOCALDIR = "." def scp_files(files): for file_name in files: path = REMOTEDIR + file_name print path scp = pexpect.spawn("scp -r %s@%s:%s %s" % (USER, SERVER, path, LOCALDIR)) scp.expect(".assword:*") scp.sendline(PASSWORD) scp.expect(pexpect.EOF) if "__main__" == __name__: files = ["rabbit.txt", "is.txt", "cute.txt"] scp_files(files)