yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は3年以上前に書かれた記事で内容が古い可能性があります

ttlマクロでログイン自動化

2018-03-07

苦手なWindows環境を整えようと、ひとまずサーバログインをttlマクロで自動化した。

ネットワーク構成

例えば以下の構成とする。
WindowsからJump Serverにアクセスしてから各サーバにアクセスするとする。

ファイル構成

ファイル構成は以下の通り。
実際に実行するのは、sw-login.ttlとsv-login.ttlなので、どこかにショートカットを作っておくとよい。

C:\Users\hogehoge\
├── pass.ttl  # パスワードが書かれたマクロ
├── main.ttl # 共通マクロ
├── sw-login.ttl # SWにログインする実行マクロ
└── sv-login.ttl # SVにログインする実行マクロ

コード

完成形のコードは以下。

大事なパスワードは別ファイルに置いておく。(自分専用PCの前提)
C:\Users\hogehoge\pass.ttl

sw_pass = '<swritch password>'
sv_pass = '<server password>'

Jump Serverまでtelnetログインする、共通マクロ。
C:\Users\hogehoge\main.ttl

; =========================
; set valiables
; =========================
; include password veriables
include 'C:\Users\hogehoge\pass.ttl'

jumpsv = '<jump server IP> '
protocol = '/telnet '
sv = '<server IP>'

; =========================
; connect to jump server
; =========================
msg = jumpsv
strconcat msg protocol
connect msg

; =========================
; login to jump server
; =========================
wait 'USERNAME:'
sendln user
wait 'PASSWORD:'
passwordbox 'password' 'enter password'
password = inputstr
sendln password

; =========================
; login to server
; =========================
wait '$'
msg = 'telnet '
strconcat msg sv
sendln msg
wait 'login:'
sendln user
wait 'password:'
sendln password
wait '$'
sendln 'sudo su'
wait ':'
sendln password

SwitchにSSHログインするマクロ。
C:\Users\hogehoge\sw-login.ttl

; =========================
; set valiables
; =========================
; login to jump server
include 'C:\Users\hogehoge\main.ttl'

; include password variables
include 'C:\Users\hogehoge\pass.ttl'

sw = '<switch IP>'

; =========================
; connect to switch
; =========================
wait '#'
msg = 'ssh ­-l admin '
strconcat msg sw
sendln msg
wait 'password:'
sendln sw_pass
wait '>'
sendln 'enable'
wait '#'
sendln 'configuration terminal'
wait '(config)#'
end

ServerにSSHログインするマクロ。
C:\Users\hogehoge\sv-login.ttl

; =========================
; set valiables
; =========================
; login to jump server
include 'C:\Users\hogehoge\main.ttl'

; include password variables
include 'C:\Users\hogehoge\pass.ttl'

sv = '<server IP>'

; =========================
; connect to server
; =========================
wait '#'
msg = 'ssh ­l admin '
strconcat msg sv
sendln msg
wait 'password:'
sendln sv_pass
wait '$'
sendln 'sudo su'
wait 'admin:'
sendln sv_pass
end

解説

include

include 'C:\Users\hogehoge\pass.ttl'

外部のttlファイルを読み込むときは、includeを使う。
fileopenなどもあるが、ttlファイルを読み込むだけならincludeがシンプル。

strconcatとsendln

msg = 'telnet '
strconcat msg sv
sendln msg

「strconcat」は文章を繋げる意味。msg変数に入っている’telnet ‘とsv変数に入っている’‘が繋がって、
‘telnet ‘という文字列が送られる。なので、スペースをしっかり入れることも大事。
文字列をコマンドとして送るには、「sendln」を使う。

passwordbox

wait 'PASSWORD:'
passwordbox 'password' 'enter password'
password = inputstr
sendln password

その名の通り、パスワード入力用のboxが出て、そこに入力した値を「inputstr」で渡すことができる。

実行

実行はダブルクリックするだけだが、うまくいかなければ以下リンクを参考に、関連付けをする。

<a href=”a href=”http://www.j-oosk.com/teraterm/configuration/516/” target=”_blank”>Tera Term-TTLファイルの関連付け(Windows7編)