Cisco機器の作業用ポート開放ttl
7月の現場での作業で使用したttlを忘れないようにアウトプットしてます。 初めて作成したので無駄な部分も多いと思いますが、誰かの参考になればと思います!このマクロの流れとしては、
1.Cisco機器にコンソール接続 (手動)
2.下記マクロの実行 (手動)
3.コンフィグ変更前のログ取得 (自動)
4.コンフィグ変更→ポートのno shutdown (自動)
5.コンフィグ変更後のログ取得 (自動)
6.マクロの終了 (自動)
という流れになっています。
この流れの3.~5.ではtextファイルからコマンドを読み込んでいます。
textファイルの中身は
show clock
show running-config
show clock
configure terminal
interface GigabitEthernet x/x/x
no shutdown
end
write memory
show clock
show running-config
3.コンフィグ変更前のログ取得
では、ログを収集するコマンドの実行をしています
4.コンフィグ変更→ポートのno shutdown
では、対象のポートを開放するためにno shutdownをして上書き保存しています
5.コンフィグ変更後のログ取得
では、ログを収集するコマンドの実行をしています
それぞれ、ログが自動で保存されるようになっているので、カスタマイズするとすればこのtextファイルを書き換えてもらえると、すぐに使用できると思います。
次にttlファイルです。
;###/初期設定----------------------------------------------
;##/各種設定(案件に応じて編集要)----------------------
COM_PORT = '0'
;HOSTADDR = ''
HOSTNAME = 'hostname'
USERNAME = 'username'
PASSWORD = 'password'
ENABLEPASS = 'enable password'
COMMAND_LIST_1 = 'ログ収集コマンド_設定変更前.txt'
COMMAND_LIST_2 = 'ログ収集コマンド_設定変更作業.txt'
COMMAND_LIST_3 = 'ログ収集コマンド_設定変更後.txt'
;##--------------------------------------------------/
;##/LOGIN方法(接続タイプに応じて編集要)---------------
;「SSH」
;「TELNET」
;「CON」
LOGIN = "CON"
;##--------------------------------------------------/
;###------------------------------------------------------/
;###/接続方法----------------------------------------------
;##/SSH接続オプション---------------------------------
;COMMAND_SSH = HOSTADDR
;strconcat COMMAND_SSH ':22 /ssh /2 /auth=password '
;strconcat COMMAND_SSH ' /user='
;strconcat COMMAND_SSH USERNAME
;strconcat COMMAND_SSH ' /passwd='
;strconcat COMMAND_SSH PASSWORD
;#/SSHアクセス処理-------------------------------
;strcompare LOGIN "SSH"
;if result = 0 then
;connect COMMAND_SSH
;endif
;#----------------------------------------------/
;sendln ''
;wait '>'
;sendln "enable"
;wait 'Password:'
;sendln ENABLEPASS
;sendln 'terminal length 0'
;sendln 'terminal width 0'
;##--------------------------------------------------/
;##/TELNET接続オプション------------------------------
;COMMAND_TELNET = HOSTADDR
;strconcat COMMAND_TELNET ':23 /nossh '
;#/TELNETアクセス処理----------------------------
;strcompare LOGIN "TELNET"
;if result = 0 then
;connect COMMAND_TELNET
;endif
;wait 'Username:'
;sendln USERNAME
;wait 'Password:'
;sendln PASSWORD
;#----------------------------------------------/
;sendln ''
;wait '>'
;sendln "enable"
;wait 'Password:'
;sendln ENABLEPASS
;sendln 'terminal length 0'
;sendln 'terminal width 0'
;##--------------------------------------------------/
;##/CON接続オプション---------------------------------
COMMAND = '/C='
;#/CONアクセス処理-------------------------------
strconcat COMMAND COM_PORT
if result = 0 then
connect COMMAND
sendln ''
endif
;#----------------------------------------------/
do
wait 'Username:' '>' '#'
if result == 0 then
end
elseif result == 1 then
sendln USERNAME
wait 'Password:'
sendln PASSWORD
wait '>'
sendln 'enable'
wait 'Password:'
sendln ENABLEPASS
elseif result == 2 then
sendln 'enable'
wait 'Password:'
sendln ENABLEPASS
endif
loop while result == 3
sendln 'terminal length 0'
sendln 'terminal width 0'
;##--------------------------------------------------/
;###------------------------------------------------------/
;###設定変更前ログ収集-------------------------------------
;##/ログ名--------------------------------------------
inputbox '設定変更前' '設定変更前' '設定変更前'
FILENAME=inputstr
;##--------------------------------------------------/
;##/ログの保存場所------------------------------------
getdir LOGSAVE
strconcat LOGSAVE '\log\'
;##--------------------------------------------------/
;##/ログのファイル名の処理----------------------------
LOGALL = LOGSAVE
getdate LOGDATE '_%Y%m%d-%H%M%S.log'
strconcat LOGALL HOSTNAME
strconcat LOGALL '_'
strconcat LOGALL FILENAME
strconcat LOGALL LOGDATE
;##--------------------------------------------------/
;##/ログ取得開始--------------------------------------
logopen LOGALL 1 1
sendln ''
pause 2
;##--------------------------------------------------/
;##/テキストファイル実行------------------------------
fileopen filehandle COMMAND_LIST_1 0
while 1
filereadln filehandle command_line
if result = 1 break
flushrecv
sendln command_line
wait '#'
endwhile
fileclose FileHandle
;##--------------------------------------------------/
;##/ログ取得終了--------------------------------------
pause 2
logclose
sendln ''
;##--------------------------------------------------/
;###------------------------------------------------------/
;###設定変更作業ログ収集-------------------------------------
;##/ログ名--------------------------------------------
inputbox '設定変更ログ' '設定変更ログ' '設定変更ログ'
FILENAME=inputstr
;##--------------------------------------------------/
;##/ログのファイル名の処理----------------------------
LOGALL = LOGSAVE
getdate LOGDATE '_%Y%m%d-%H%M%S.log'
strconcat LOGALL HOSTNAME
strconcat LOGALL '_'
strconcat LOGALL FILENAME
strconcat LOGALL LOGDATE
;##--------------------------------------------------/
;##/ログ取得開始--------------------------------------
logopen LOGALL 1 1
sendln ''
pause 2
;##--------------------------------------------------/
;##/テキストファイル実行------------------------------
fileopen filehandle COMMAND_LIST_2 0
while 1
filereadln filehandle command_line
if result = 1 break
flushrecv
sendln command_line
wait '#'
endwhile
fileclose FileHandle
;##--------------------------------------------------/
;##/ログ取得終了--------------------------------------
pause 2
logclose
sendln ''
;##--------------------------------------------------/
;###------------------------------------------------------/
;###設定変更後ログ収集-------------------------------------
;##/ログ名--------------------------------------------
inputbox '設定変更後' '設定変更後' '設定変更後'
FILENAME=inputstr
;##--------------------------------------------------/
;##/ログのファイル名の処理----------------------------
LOGALL = LOGSAVE
getdate LOGDATE '_%Y%m%d-%H%M%S.log'
strconcat LOGALL HOSTNAME
strconcat LOGALL '_'
strconcat LOGALL FILENAME
strconcat LOGALL LOGDATE
;##--------------------------------------------------/
;##/ログ取得開始--------------------------------------
logopen LOGALL 1 1
sendln ''
pause 2
;##--------------------------------------------------/
;##/テキストファイル実行------------------------------
fileopen filehandle COMMAND_LIST_3 0
while 1
filereadln filehandle command_line
if result = 1 break
flushrecv
sendln command_line
wait '#'
endwhile
fileclose FileHandle
;##--------------------------------------------------/
;##/ログ取得終了--------------------------------------
pause 2
logclose
sendln ''
;##--------------------------------------------------/
;###------------------------------------------------------/
closett
; マクロ終了
end
長くなってしまいましたが、ttlを書き換えるだけでSSH接続やtelnet接続にすぐ対応させられるようになっているので、今後必要な時に変更を少し加えるだけで使用できます。
8月も現場での作業で使用する予定なので、時間があれば無駄なところがないか探して磨きをかけたいと思います!