今更だけどexpect を使ったのでメモ
EXPCETとは
EXPECTは、Bashの対話プロンプトに自動入力するソフトウェア。
特定の文字列を見つけると,入力する。
なぜ expectなのか
rsync のファイルを自動化したかった・・・・しかし、公開鍵(id_rsa.pub) が使えない。。RsyncをCronで自動実行しようとしたらパスワード入力がネックになって自動起動しない。で詰んだ。
仕方ないので expect で自動実行をすることに。
Exceptコマンドを使う。
今回はExpectをつかってRsyncの起動。
rsync_example.la
1 #!/usr/bin/expect 2 3 #タイムアウト 4 set timeout 5 5 # rsync 起動 6 spawn rsync -rltDvz --progress --partial --bwlimit=250 example.la:/mnt/comics/ /mnt/example.la 7 #パスワード入力 8 expect "takuya@example.la's password:" 9 send "PASS_WORD\n" # ここでパスワードを入れる 10 11 interact
起動
chmod +x rsync_example.la ./rsync_example.la
これで自動的に入力が始まってくれる
解説
- spawn コマンド
- コマンドに実行したいコマンドを入れる
- expect "文字列"
- 文字列に、プロンプトを指定する。ここで指定した文字列が来たら,すかさず文字入力。
簡単です。