見出し画像

【TTL】はじめてのTTLマクロ 7 ホスト名一致確認

はじめに

ログ取得対象のNW機器はプロンプトにホスト名が表示されるようになっている。そのため、ログイン先のホスト名と、batに記載されたホスト名が一致していることをチェックする。これにより、ログイン先アドレスの誤りを検知可能になる。

logget.bat

引数の7番目にホスト名(CEN-M-RT-001)を指定する。

@echo off

mkdir log
C:\work\logget\conf\teraterm-5.2\ttpmacro.exe C:\work\logget\logget.ttl CEN-M-RT-001.log 192.168.11.111 rpass epass ruser CEN-M-RT-001 command.txt

logget.ttl

プロンプト(CEN-M-RT-001#)の末尾1文字を削除して、これがホスト名と一致するか確認する。
また、今後waitするためのプロンプト(CEN-M-RT-001#)を作成する。※"#"のみでwaitすると、descriptionやshow process cpu historyなどの"#"が反応してコマンドが取得できないことがあるので注意が必要。

;------------------------------------------------------------------------------
;変数設定
;------------------------------------------------------------------------------
  ;debugモードで動かすか選択
  numDebugFlag = 1		; 1:debugモード 0:通常モード
  if numDebugFlag = 1 messagebox "debugModeOn" "debug"

  ;フォルダ名・ファイル名を設定
  strIniFileName        = ".\TERATERM.INI"

  ;プロンプト回り
  strConnectText = ""
  strLogFileName = params[2]
  strIP          = params[3]
  strLoginPass   = params[4]
  strEnablePass  = params[5]
  strLoginUser   = params[6]
  strHostname    = params[7]

;------------------------------------------------------------------------------
;メインルーチン
;------------------------------------------------------------------------------
:mainRoutin
 ;機器にログインしてログ取得
(略)
  call funcCheckHostname

(略)

;----------------------------------------------------------------------------
;hostnameを取得して一致確認
;----------------------------------------------------------------------------
:funcCheckHostname
  if numDebugFlag = 1 messagebox "funcCheckHostname" "debug"

  ; プロンプトを取得 (hostname#のこと)
  flushrecv
  sendln
  sendln	; 2回送らないと2回目のrecvlnで止まる
  recvln	; エコーバックを読み捨てる 
  recvln	; 実行結果を取得(inputstrに格納される)

  if numDebugFlag = 1 messagebox inputstr "debug funcCheckHostname inputstr"

  ; プロンプトからホスト名を取得
  strscan inputstr "#"				; "hostname#"の何文字目に"#"があるかがresultに入る
  strcopy inputstr 1 (result - 1) strTemp	; strTempに"hostname"が入る

  if numDebugFlag = 1 messagebox strTemp "debug funcCheckHostname strTemp"

  ;hostnameの一致確認し、不一致だったらエラー出して終了
  strscan strHostname strTemp

  if result = 0 then
    TmpStr = ''
    strconcat TmpStr 'ホスト名が違います'
    strconcat TmpStr #13#10
    strconcat TmpStr 'IP : '
    strconcat TmpStr StrIP
    strconcat TmpStr #13#10
    strconcat TmpStr '誤 : '
    strconcat TmpStr StrHostname
    strconcat TmpStr #13#10
    strconcat TmpStr '正 : '
    strconcat TmpStr strTemp
    messagebox TmpStr 'ホストネームエラー'

    sendln "exit"
  endif

  ;プロンプトの文字列を作成("hostname#"になる)
  strPrompto = strHostname
  strconcat strPrompto '#'

return

前の記事


この記事が気に入ったらサポートをしてみませんか?