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とかして、運用ツール的なの作りたくなってきた。 いかん、仕事しないと。。。
にしても、なんで今まで知らなかったんだろう。。 これ知ってれば、あのプロジェクトも、あのプロジェクトも、 もっと楽できたような気がする。