2009/12/24 23:27 【研究課題】
なんかすげーひさびさの更新が、こんな味も素っ気もない記事ですな。
…最近なんかイベントがあったはずなんだけど、よくわかりませんな。中止になったんじゃないですか?
…最近なんかイベントがあったはずなんだけど、よくわかりませんな。中止になったんじゃないですか?
■ 外部コマンドを実行するとパスワード入力を求められちゃう
さて、ある事情があって、異なるサーバ間でデータの同期を取る必要がありいろいろ細工してみた。rsyncコマンドで対象ファイルを指定すればいいんだけど、その際に厄介なことは、パスワードの入力が求められること。
一回限りだったらそれでも別にいいんだけど、できればcronに突っ込んで1時間ごとに実行したい。
rsyncコマンドを実行する際にパスワード入力をさせない方法は幾つかあるようだけど、どれも面倒そう。こういう運用は2ヶ月ほどの予定で、それ以後は同期元のサーバは停止するので、わざわざrsyncデーモンを走らせるとかの処置は、やってもいいけどちょっとモチベーションがわかない。
本格的なバックアップサーバを用意するわけではないので、このままrubyで外部コマンドを実行する簡単なスクリプトを組んでおきたい。
で、スクリプトを組む上でのポイントは
- 複数のrsyncコマンドを実行する
- パスワードを入力する
- 成功失敗に関わらず、実行結果をログに出す
- ひとつのコマンドが失敗しても次のコマンドを実施する
こういう対話的な処理をrubyで実現する場合、ptyとexpectを利用するのが定番らしい。
1: snjx 『参考までに』 (2016/01/14 10:09)
2: snjx 『↑URLを参照のこと』 (2016/01/14 10:09)