はじめに
ネットワーク構築案件では、構築作業時に対象ネットワーク内の機器にてコマンドを実行して状態確認を行います。対象機器や実行コマンドが多い場合、手作業でコマンド実行すると時間を要してしまいます。このような場合に、Tera Term マクロを活用して効率的にコマンドを実行することができます。
コマンド実行マクロの処理の流れ
- 機器にログインする
- ログ取得を開始する(必要に応じて)
- コマンドを実行する
- ログ取得を終了する(必要に応じて)
- 機器からログアウトする
機器にログインする方法
機器にログインするマクロの詳細については以下の記事を参照してください。
→【Tera Term】機器にログインするマクロを作成する
コマンドを実行させる方法
Tera Term マクロでコマンドを実行させる場合は、以下の手順となります。
- 特定の文字列が画面に出力されるのを待つ
- 一行分のコマンド文字列を送信する
特定の文字列が画面に出力されるのを待つ
特定の文字列が表示されるまでマクロ処理を止めます。主に以下のような文字列を対象とします。
- CLI プロンプト(>、#、$ など)
- 何らかの入力を促す文字列(「login:」 など)
マクロの構文は以下の通りです。
wait "文字列"
wait "#"
一行分のコマンド文字列を送信する
CLI で実行する一行分の文字列を送信します。マクロの構文は以下の通りです。
sendln "送信する文字列"
sendln "show full-configuration"
ログを保存する方法
必要に応じてログを保存する処理をマクロに含めます。
Tera Term の設定でログを自動保存する設定になっている場合は、マクロで指定したログ設定は無視され、Tera Term のログ保存設定に基づいてログが保存されるため注意してください。
マクロでログを制御したい場合は、Tera Term の設定でログを自動保存しない設定とした上でマクロを実行してください。
ログ保存処理の手順は以下の通りです。
- ログ取得を開始する
- ログ取得を終了する
ログ取得を開始する
マクロの中のログ取得を開始したい位置で、以下の構文でログ取得開始命令文を記載します。
logopen "ログファイルパス" 0 0
- 指定したファイルパスが既に存在する場合はファイルを上書きします
logopen "C:\Users\hoge\Documents\作業ログ\switch01.log" 0 0
ログ取得を終了する
マクロの中のログ取得を終了したい位置で、以下を記載します。
logclose
ログファイル名の高度な指定方法について
ログファイル名に接続先ホスト名(IP アドレス)やマクロ実行時の日時を含めることが良くあります。この方法については以下の記事を参照してください。
→【Tera Term マクロ】ログファイル名に接続先ホスト名と実行日時を入れる方法
コマンド実行マクロの例
機器にログインしコマンドを実行してログアウトするマクロ
Telnet で接続する場合
対象機器として FortiGate を想定します。以下の内容を実行するマクロを作成します。
- 機器に Telnet 接続する
- ログ取得を開始する
- ログインする
- いくつかの状態確認コマンドを実行する
- ログ取得を終了する
- ログアウトする
マクロ例:
;1.Telnet 接続
connect "10.1.10.254:23 /nossh /T=1"
;2.ログ取得開始
logopen "C:\Users\hoge\Documents\作業ログ\FW01.log" 0 0
;3.ログイン
wait "login:"
sendln "admin"
wait "Password:"
sendln "hogepass"
;4.コマンド実行
wait "#"
sendln "get system status"
wait "#"
sendln "get system global"
wait "#"
sendln "get system performance status"
wait "#"
sendln "get system interface physical"
;5.ログ取得終了
wait "#"
logclose
;6.ログアウト
sendln "exit"
SSH で接続する場合
SSH で接続する場合は以下の内容となります。
- 機器に SSH 接続する
- ログ取得を開始する
- いくつかの状態確認コマンドを実行する
- ログ取得を終了する
- ログアウトする
マクロ例:
;1.SSH 接続
connect "10.1.10.254 /ssh /auth=password /user=admin /passwd=hogepass"
;2.ログ取得開始
logopen "C:\Users\hoge\Documents\作業ログ\FW01.log" 0 0
;3.コマンド実行
wait "#"
sendln "get system status"
wait "#"
sendln "get system global"
wait "#"
sendln "get system performance status"
wait "#"
sendln "get system interface physical"
;4.ログ取得終了
wait "#"
logclose
;5.ログアウト
sendln "exit"
セミコロン「;」を行頭に記載すると、その行の内容はコメントアウトとして扱われます。説明文を記載したい場合などに利用できます。
ログ取得を終了するタイミングに注意してください。上のマクロ例で、logclose
の前に wait '#'
が無い場合、最後に実行されるコマンドの get system interface physical
の出力についてはログに含まれなくなってしまいます。コマンド出力の表示が終わる前にログ取得を終了してしまうためです。
―――――――――――――