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とかして、運用ツール的なの作りたくなってきた。
いかん、仕事しないと。。。

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

コメント

  1. Garapon より:

    expect便利っすね!知りませんでした。
    今度からexpect使ってみます!

    ちなみにテラタームマクロもSSH対応してるので自動化できるっすよ。Windowsでしか動かないのが難点ですが><

  2. shinodogg より:

    あー、がらぽん昔からTeraTermのマクロ好きだったもんね~
    ってかTeraTermってsshイケたのか。
    WindowsだとPuttyかPoderosa使わなきゃなのかと思ってた・・・w

  3. […] Checktweetmeme_style = 'compact';tweetmeme_url='http://shinodogg.com/?p=3419&#039;;以前、expectコマンドが便利な件(http://shinodogg.com/?p=1886)というエントリを書いたように、 […]

タイトルとURLをコピーしました