Automatorを使用してTerminal.appでSSH接続を自動化する | 成長の果実

成長の果実

不完全でも良いから前に進む。

MacにはTerminal.appが備わっているけど、個人的には使い勝手はあまりよろしくない。

ずっとTeraTermを使っていたせいもあるかもしれないけど、Terminal.appでもワンクリックで対象サーバへSSH接続までできたらなーと思ってた。

自分だけじゃなくて他の人も思っているはず。


MacにもTeraTermくらい便利なターミナルソフトがあるといいんだけど、自分が知らないだけかな・・・?


待っていても誰も作ってくれないので、AppleScriptで実現してみた。

AppleScriptでの処理内容は、

1.Terminal.appを起動
2.ログ取得を開始(scriptコマンド実行)
3.対象サーバへのSSH接続

これを実現されたソースコードが以下のもの。

(*
備忘録:
scriptコマンドでログを生成すると文字化けしているため、
以下のようにcolコマンドを使って不要な特殊文字を取り除き、文字化けを直すことが可能。
# col -bx < {変換前ファイル名} > {変換後ファイル名}
*)

--------------- Setting Start ---------------
-- SSH接続ホスト名
set _hostName to "ホスト名"

-- SSH接続コマンド実行
set _CMD to "ssh -l ユーザ名" & " " & _hostName

-- 操作ログファイル格納ディレクトリ
set _logDir to "/Users/hogehoge/Desktop/"
--------------- Setting End ---------------



--------------- Script Start ---------------
-- 現在の日時を取得(YYYYMMDD)
set _date to do shell script "date +%Y%m%d"

-- Terminal.appを起動
tell application "Terminal"
-- 操作ログの自動記録を開始(追記モード)
---- 操作ログファイルは日別とする。
------ 操作ログファイル名:ホスト名-YYYYMMDD.log
do script "script -a " & _logDir & "/" & _hostName & "-" & _date & ".log"

-- 指定秒数処理を停止させる
---- delay処理後のコマンド(SSH接続コマンド)が失敗する場合は、delay値を増やす必要がある。
delay 1

-- SSH接続コマンド実行
do script _CMD in front window
end tell
--------------- Script End ---------------

赤字の部分は適宜自分の環境のものに置き換えること。


上記のAppleScriptを、Automatorを使用してワークフローを作成。

最終的には.app形式で保存して終了!

$成長の果実-applescript_ssh


これでわざわざ「ターミナルを開く→SSHコマンドを打って接続」を毎回やらずに済むようになった。


----------
サンプルソース:https://github.com/tetsuco/ssh-connect