expectコマンドが便利な件

expectっていうコマンド(http://www.linux.or.jp/JM/html/expect/man1/expect.1.html) の存在は、最近、サーバ間でファイル転送しようと思った時に、scpしか選択肢がなくて、 自動化できない・・・とかいって調べてた時に知りました。

結局、その時は権限的にサーバにexpectコマンドを入れることができなかったので、 以下のようにJavaやってる人ならお馴染みのAntでやりくりしました。

これはこれで中の実装がどうなってるのか気になるけど・・・

<scp  file="送信元フルパス"  todir="アカウント@ホスト名:送信先パス"  trust="true"  password="パスワード" />

んで、しばらくボケーっと過ごしていたのですが、 日々サービスの運用やってたりすると、毎日sshしまくるんですよね。 1日何回ユーザー名とパスワード叩いてるんだろうっていう。 telnetだったら自動化できるんだけど、sshはなぁって寂しい思いをしていました。

仕事するときは、 メール/ドキュメント/メッセンジャーとかはWindowsでやってて 開発/運用作業/xxxはLinux(Ubuntu)でやってます。

だったら、自分のUbuntuにexpect入れちゃえばいいじゃんって。 気付くの遅・・・。

↓こんな感じでシェル化してやれば自動化できます。 expect -c " spawn ssh ホスト名 expect password: ; send "パスワードr" interact " interactってなんか説明難しいけど、そのサーバーに居続けてくれます。 コマンド叩いた元に帰っちゃわないで。

いやー、コレ便利。1日3分くらい短縮できそう。 1ヶ月で1時間。塵も積もれば・・・・。

つか、passwordのサーバとPasswordのサーバがいたりすんだよね・・・

あとはパスワードの暗号化とか。。

そんなこんなしてたらsudoとかして、運用ツール的なの作りたくなってきた。 いかん、仕事しないと。。。

にしても、なんで今まで知らなかったんだろう。。 これ知ってれば、あのプロジェクトも、あのプロジェクトも、 もっと楽できたような気がする。