• 締切済み

コマンドの自動実行

手動で次のようなコマンドを入力して行っていたバックアップを「expect」を使って自動で行うようにしたいのですが、うまくいきません。どのようにすればよいか教えてください。 #cd /backup #rm -r * #dump 0uaf - / | restore xf - DUMP: Date of this level 0 dump: Fri Feb 12 12:42:11 2010 DUMP: Dumping /dev/hda1 (/) to standard output DUMP: Label: none ---- 省略 ---- DUMP: Average transfer rate: 1517 kB/s DUMP: DUMP IS DONE set owner/mode for '.'? [yn] y <---'y'を入力 #

みんなの回答

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

expect を使う必要のある部分は set owner/mode for '.'? [yn] y <---'y'を入力 の y を入力するところだけですね。 それだけでしたら restore xof - と restore コマンドに -o フラグをつけると聞いてこなくなる ので expect を使う必要もなくなるのではないでしようか。

Tojinbou
質問者

お礼

返事が大変遅くなりすみません。 -o フラグをつけるとうまくいきました。 ありがとうございました

Tojinbou
質問者

補足

そのようなフラグがあるのですか?'y'を入力したことと同じことになるのですか?

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

> うまくいきません。  うまくいきません、 というのは、 本来どうあるべきが、 何が どうなっているのでしょうか?

Tojinbou
質問者

補足

返事が遅くなりすみません。 「expect」の使い方を試すために、あらかじめ次のようなスクリプトを書いてみました。 #!/usr/bin/expect -f spawn cp /home/abcd/example /home/abcd/dummy cd /home/abcd spawn rm -i dummy expect "dummy'?" send "y\r" interact この場合は、dummyというファイルを作り、それを削除するという内容ですが、 spawn cp /home/hiro/example /home/hiro/dummy spawn rm -i dummy rm: remove 通常ファイル `dummy'? y と表示して意図通り動きました。これをまねて、 #!/usr/bin/expect -f cd /backup_root spawn rm -r * spawn dump 0uaf - / | restore xf - expect "[yn]" send "y\r" interact とすると spawn rm -r * spawn dump 0uaf - / | restore xf - invalid command name "yn" while executing "yn" invoked from within "expect "[yn]"" (file "./hda_bk.sh" line 5) と表示します。削除はされていませんし、バックアップもしていません。"expect"で検索していろろいろ調べているのですが、どうすればよいか全くわからない状態です。

関連するQ&A