Linuxでシステムの保守をおこなっている人は、“お決まりで実行するシェル”がある人が多いのではないでしょうか?
例えば、特定のログフォルダに格納されているログファイルをtailしたり、データベースにログインして検索結果を確認したり、です。
僕もあります。
その場合、ログインして、特定フォルダに移動して、シェルを実行して、といったように、毎回同じコマンドを打つのは面倒ですよね。
ましてや、シェルが格納されているフォルダの階層が深かったりすると、”あれ?シェルってどこにあるんだっけ?”っていう事態にもなりかねません。
その場合、そういったお決まりの作業をあらかじめ自動化しておくと、とても便利です。
今回は、TeraTermマクロを使ってお決まりの作業を自動化する方法を紹介します。
環境情報
今回は、WindowsマシンにTeraTermがインストールされている状態を前提とします。
TeraTermを使って、Linuxサーバにログインします。
- クライアントOS:Windows7
- ターミナルエミュレータ:TeraTerm
- サーバOS:Linux
ログイン→ログ保存→シェル実行のマクロ
サクッと、TeraTermマクロを作ってみます。
TeraTermマクロの文法はそんなに難しくないので、改めて説明する必要もないかと。
今回は、ログインする → ログ保存出力設定をおこなう → シェルを実行する の3つをおこなうマクロを作ります。
; sample TeraTerm Macro ; ; FILE: teraTermSample.ttl ; create: 2019/05/02 ; Author: SakuSaku call login call log call exec end ; ; ログイン ; :login ; ホスト名とログインアカウントを定義 host = 'sakusaku.com:22' account = 'sakusaku' ; リモート認証に必要な固定文字列を定義 msg = 'Enter password for user ' strconcat msg account passwordbox msg 'Get password' ; 「msg」を作業領域とし、リモート認証に必要な文字列を作成する msg = host strconcat msg '/ssh /auth=password /user=' strconcat msg account strconcat msg ' /passwd=' strconcat msg inputstr ; 認証する connect msg return ; ; ログ出力の設定 ; :log ; 入力できる状態までまつ wait '$ ' ; ログファイルのフルパスを作成 getdate LOG_NAME '%Y%m%d_%H%M%S_&h.log' FULLPATH = 'C:\Log\' strconcat FULLPATH LOG_NAME ; ログ取得を開始する logopen FULLPATH 0 0 return ; ; シェル実行 ; :exec ; 入力できる状態までまつ wait '$ ' ; シェルが存在するディレクトリまで移動 msg = 'cd ' strconcat msg '/home/sakusaku/' sendln msg ; 入力できる状態までまつ wait '$ ' ; シェルを実行する msg = './sakusaku.sh ' sendln msg return
わかり易く、「ログイン」「ログ出力設定」「シェルを実行」のそれぞれをサブルーチン化しています。
サブルーチンは、以下のルールで作成すればよいです。
:methodName return
「methodName」に、サブルーチンの名前を定義すればよいです。
呼び出す際は「call」で呼び出すだけ、です。
call methodName
サブルーチンの呼び出しが全て終わったあとに「end」を記載することを忘れないようにしてください。
end
サンプルマクロはSSHでログインしています。
ホスト名とアカウントを指定して、TeraTermに通知する文字列を作成したあとに、「connect」を使用して認証をおこなっています。
マクロが正常に動作すると、パスワード入力ボックスが表示されます。
パスワード入力ボックスにパスワードを入力してOKボタンを押下すれば、ログイン以降のマクロが実行されます。
TeraTermのコマンド実行結果をクライアント(Windows)にファイル出力するために、ログ出力設定をおこなっています。
このログ出力もマクロ化することができます。
; ログファイルのフルパスを作成 getdate LOG_NAME '%Y%m%d_%H%M%S_&h.log' FULLPATH = 'C:\Log\' strconcat FULLPATH LOG_NAME
「LOG_NAME」はログファイル名です。
「getdate」を使用して、現在日時をログファイル名にしています。
ここで作成したファイル名が、ローカルPCに保存されるログファイル名になります。
「FULLPATH」に最初に格納しているのは、クライアントPCのログファイル格納先フォルダです。
ここで作成したパスに、ログファイルが出力されます。
最終的にパス名とファイル名を結合して完了です。
TTLとTTPMACROの関連付け
TeraTermマクロファイルは「.ttl」ファイルで作成します。
「.ttl」ファイルをダブルクリックしてマクロを実行するためには、ファイルの関連付けで「.ttl」を「ttpmacro.exe」に関連付けしておく必要があります。
仮に、「ttpmacro.exe」ではなく、TeraTerm本体である「ttermpro.exe」に関連付けしてしまうと以下のメッセージが表示されてマクロが動きません。
「Invalid host」と実行される際の原因は、ほとんどが上記の関連付けしているアプリケーションの誤りです。
まとめ
TeraTermマクロの作り方と使い方を、紹介してきました。
- お決まりの作業はTeraTermマクロで自動化した方がいい。
- マクロはサブルーチン化するとわかり易い。
- Invalid Host が出る原因は、ほとんどは関連付けが失敗している。