見出し画像

【TTL】はじめてのTTLマクロ 10 ログインするプロトコルを指定する

はじめに

機器にログインするためのプロトコル(telnet/ssh1/ssh2)を指定できるようにする。

logget.bat

第9引数にプロトコルを指定する。

@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 ssh2

logget.ttl

指定されたプロトコルにより、異なるconnect文を作成するよう処理を実装。
また、コネクト後に特権モードに入ったりログインするサブルーチンを作成する。

  ;プロンプト回り
  strPrompto = ""		; "hostname#"といったプロンプト全体
  strLogDirPath = ""
  strCommandsFilePath = ""
  strInputText = ""
  strConnectText = ""
  strLogFileName = params[2]
  strIP          = params[3]
  strLoginPass   = params[4]
  strEnablePass  = params[5]
  strLoginUser   = params[6]
  strHostname    = params[7]
  strCommandsFileName = params[8]
  strLoginProt = params[9]

(略)

;------------------------------------------------------------------------------
;メインルーチン
;------------------------------------------------------------------------------


  strCommandsFilePath = strCommandsDirName
  strconcat strCommandsFilePath "\"
  strconcat strCommandsFilePath strCommandsFileName 


  ;機器にログインしてログ取得
  call funcGetConnectText
  call funcConnectDevice
  call funcLogin
  call funcCheckHostname
  call funcMakeLogFile
  call funcExecCommands

  sendln "exit"

:labelClose
  end				; マクロ終了

(略)

;------------------------------------------------------------------------------
;connectするための文字列を作成するサブルーチン
;------------------------------------------------------------------------------
:funcGetConnectText
  if numDebugFlag = 1 messagebox "funcGetConnectText" "debug"
  ;ログインプロトコルを判別
  numTemp = 0
  strscan StrLoginProt 'telnet'
  if result>0 numTemp = 1
  strscan StrLoginProt 'ssh1'
  if result>0 numTemp = 2
  strscan StrLoginProt 'ssh2'
  if result>0 numTemp = 3

  ;connectするための文字列生成
  strConnectText = ""			;変数を初期化しておく
  if numTemp = 1 then			;telnetの処理
    strTemp = StrIP
    strconcat strTemp ':23 /nossh'
    connect strTemp 

  elseif numTemp = 2 then		;ssh1の処理
    strTemp = StrIP
    strconcat strTemp ':22 /ssh /1 /nosecuritywarning'
    strconcat strTemp ' /auth=password'
    strconcat strTemp ' /user='
    strconcat strTemp StrLoginUser
    strconcat strTemp ' /passwd='
    strconcat strTemp StrLoginPass

  elseif numTemp = 3 then		;ssh2の処理
    strTemp = StrIP
    strconcat strTemp ':22 /ssh /2 /nosecuritywarning'
    strconcat strTemp ' /auth=password'
    strconcat strTemp ' /user='
    strconcat strTemp StrLoginUser
    strconcat strTemp ' /passwd='
    strconcat strTemp StrLoginPass

  else
    strTemp = "ログインプロトコルの指定が誤っています"
    strconcat strTemp StrLoginProt 
    messagebox strTemp "error"
  endif  

  strConnectText = strTemp

return

(略)

;------------------------------------------------------------------------------
;機器にログインするサブルーチン
;------------------------------------------------------------------------------
:funcLogin
  if numDebugFlag = 1 messagebox "funcLogin" "debug"

  wait ">" "Password:" "#"
  if result=1 then
    flushrecv
    sendln "enable"
    call funcLogin

  elseif result=2 then
    if numTemp = 1 then
      flushrecv
      sendln strLoginPass
      numTemp = 3
      call funcLogin

    else
      flushrecv
      sendln strEnablePass  
      call funcLogin

    endif

  elseif result=3 then
    flushrecv

  else
    strTemp= strLogDirPath
    strconcat strTemp '\'
    strconcat strTemp StrLogFileName
    getdate DATE
    gettime TIME
    strcopy DATE 1 4 FDATE
    strcopy DATE 6 2 FMONTH
    strcopy DATE 9 2 FDAY
    strconcat FDATE FMONTH
    strconcat FDATE FDAY
    strcopy TIME 1 2 FTIME
    strcopy TIME 4 2 FMIN
    strcopy TIME 7 2 FSEC
    strconcat FTIME FMIN
    strconcat FTIME FSEC
    strconcat strTemp '_'
    strconcat strTemp FDATE
    strconcat strTemp '_'
    strconcat strTemp FTIME
    strconcat strTemp '_接続エラー.log'
    filecreate numTemp strTemp 
    fileclose numTemp 
  endif

return

前の記事


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