sshで他のサーバーにログインする時に、毎回パスワード入力するのって面倒ですよね?
え? SSH鍵認証使えばパスワードなしでログインできるって?
その通りなんですが、ログイン先の環境を勝手にいじれなくてSSH公開鍵を置けない状況だったりすることもあるんです。
そういう場合の対処方法はいくつかあるんですが、今回はexpectコマンド使って自動化する方法を紹介します。
いたって簡単。実行環境にexpectコマンドが入っていれば以下のようなスクリプトを書くだけです。
#!/usr/bin/expect
set timeout 10
spawn ssh user@192.168.0.1
expect "password:"
send "hogehoge\n"
interact
上記の場合、ログインユーザがuser、サーバが192.168.0.1、パスワードがhogehogeの場合のスクリプトです。また、ログイン時に 「password:」というメッセージがサーバから送られてきたら、hogehoge + 改行 を送ってくれます。
ね、簡単でしょ。
スクリプトのデバッグしたいときは、「exp_internal 1」をスクリプトの最初で実行してあげればOKです。password: という文字にマッチしたかどうか等が確認できます。