【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