rabbitfoot530's diary

読んだ本と、プログラムに関することのメモです。好きな言語は、C++, Python, Golang, TypeScript。数学・物理・学習理論も好きです。

pexpectでinteractは使わない

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)