expectを使う

6月7日のエントリでインストールしたexpect。scpのパスワード認証で特定ディレクトリ以下の複数ファイルを転送するのに使っています。
作ったスクリプトがこんなの。

#!/bin/bash
DATADIR=/home/hogehoge/
for i in `find $DATADIR -ctime -2 -type f -print`
do
    /usr/local/bin/expect -c "
    spawn scp $i account_name@hostname:/export/home/account_name
    expect {
        \"Are you sure you want to continue connecting (yes/no)\" {
            send \"yes\r\"
            expect \"Password:\"
            send \"PASSWORD\r\"
        }
        \"Password:\" {
            send \"PASSWORD\r\"
        }
    }
    expect eof
    "
done

scpで初めてのホストにつなぐと鍵ストアに入れますかってのがでるので、その分岐があります。最初に使うときだけにしか通らないけど。
findで見つけたファイル名の数だけscpが動作してしまうのがちょっとダサいところ。