コマンド | 説明 |
---|---|
expect | 対話形式のコマンドを自動化する |
sudo yum install expect
cron で expect が期待通りに動かない。それを解決した時のメモ。
下記のような shell スクリプトで、 cron + expect が正常に動作した。
#!/bin/sh function do_rsync() { passwd=hogefuga expect -c " spawn $1 expect \"Enter passphrase:\" send \"$passwd\n\" #interact expect eof exit " return 0 } do_rsync 'rsync -av --delete -e "ssh -i /path/to/id_rsa" hoge@source_server:/path/to/source_dir/ /path/to/dest_dir/'
interact 命令を止めて、下記2行を採用した。
expect eof exit
interact命令は、「制御をユーザに返す」ことを指示します。
そのため、cron の場合、制御を返されても引き継ぐユーザーがおらず、正常に動作していなかったようです。