簡単ログインスクリプト

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はタイムアウトさせないためのもので、ログインに成功したらプロンプト「$」に反応して、ログアウトするのを防いでいます。

とまあよくあるスクリプトでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA