この記事は3年以上前に書かれた記事で内容が古い可能性があります
ttlマクロでログイン自動化
苦手な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編)