ずっと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形式で保存して終了!
これでわざわざ「ターミナルを開く→SSHコマンドを打って接続」を毎回やらずに済むようになった。
----------
サンプルソース:https://github.com/tetsuco/ssh-connect