少し前まで、自分はWindowsユーザだっただどMacに移行しましたー。

Windows時代にTeraTermマクロでサーバにログインしていたのですが、TeraTermがMacにないので使えなくなっちゃいました。

ってことで、同じような動きをするシェルを用意しました。

サーバに一般ユーザでログインして、その後rootユーザににsuするシェルです。

シェルをMacのどこかに置いて、ターミナルで、sh して実行してください。

#!/bin/bash

#ログイン情報
SERVER_HOST='153.126.xxx.xxx’
LOGIN_USER=‘tanaka’
USER_PASS=‘password’

#ROOTのパスワード
ROOT_PASS='password'

#接続中のメッセージ
echo 'Connecting...'

#対話でコマンド実行
expect -c "
set timeout 60
spawn ssh $LOGIN_USER@$SERVER_HOST
expect \"$LOGIN_USER@$SERVER_HOST's password\";
send \"$USER_PASS\n\"
expect \"~]\"
send \"su -\n\"
expect \":\";
send \"$ROOT_PASS\n\"
interact
"

 

動作の概要を少し説明しますね。

expectコマンドで対話的にコマンドを実行します。

まず最初に、set timeout でタイムアウト秒数を指定してます。

その後、spawnを書いて、プロセスを生成し、expectでサーバの応答を待って、sendで送る感じです。

最後のinteractは、spawnで生成したコマンドのプロセスをターミナル上(標準入出力)で実行する指定です。

サーバから、送られてくる応答文字列などは環境に合わせて変更してくださいね。

まいどどうも!