sshとかtelnetって面倒くさい
遠隔で別の端末を操作したいときsshやtelnetを使います。でも複数回出入りしないといけないとき、いちいち宛先入力してパスワード入力するのは面倒くさいです。ということでそれをまとめたスクリプトを作ってみました。
expectで自動化
Linuxにはexpectというインタプリタがありshellとの対話的処理を自動化する事が出来ます。スクリプトの中身はこんな感じ。
#! /bin/bash
IP=$1
RMHOST="remote"
PASS="hogemoge"
expect -c "
set timeout 5
spawn env LANG=C /usr/bin/ssh remote@$IP
expect \"password:\"
send \"${PASS}\n\"
expect \"$\"
interact
"
shellスクリプトの中でexpectを使うには-cオプションを付けます。spawnで実行したいコマンドを自動実行させます。LANG=Cはデフォルト(英語)のロケールを使うという意味です。プログラムの出力結果を翻訳せずに英語で出力させるため。
sshした後の出力結果が「password:」という文字列と一致すればPASSに入れておいたパスワードを送ります。
最後のinteractはタイムアウトさせないためのもので、ログインに成功したらプロンプト「$」に反応して、ログアウトするのを防いでいます。
とまあよくあるスクリプトでした。