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とかして、運用ツール的なの作りたくなってきた。
いかん、仕事しないと。。。
にしても、なんで今まで知らなかったんだろう。。
これ知ってれば、あのプロジェクトも、あのプロジェクトも、
もっと楽できたような気がする。
コメント
expect便利っすね!知りませんでした。
今度からexpect使ってみます!
ちなみにテラタームマクロもSSH対応してるので自動化できるっすよ。Windowsでしか動かないのが難点ですが><
あー、がらぽん昔からTeraTermのマクロ好きだったもんね~
ってかTeraTermってsshイケたのか。
WindowsだとPuttyかPoderosa使わなきゃなのかと思ってた・・・w
[…] Checktweetmeme_style = 'compact';tweetmeme_url='http://shinodogg.com/?p=3419';以前、expectコマンドが便利な件(http://shinodogg.com/?p=1886)というエントリを書いたように、 […]