IT技術

teratermでログイン用マクロを作成してみた

ttlのお勉強のために、teratermマクロでログインのためのttlを作成してみました。

teratermログインttlソースコード

; loginttl

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ログイン情報設定             ※環境に合わせて書き換え
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
username = 'vagrant'			; 'ログインユーザ'
hostname = '192.168.33.10'		; '接続するサーバのIPアドレス'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;パスワード入力用msgbox
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
msg   = 'パスワード入力 ユーザ:'		;msgboxに表示するmsg
title = 'Get password'					;msgboxに表示するtitle
strconcat msg username					;msgにユーザー名を文字列連結
passwordbox msg title					;msgboxを表示



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;接続用文字列作成&ログイン
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sprintf2 coninfo '%s /ssh /2 /auth=password /user=%s /passwd=%s' hostname username inputstr 
; sshのバージョンは2を想定
connect coninfo

 

以下ソースコード解説。

①ログイン情報設定

6行目、7行目はログイン情報を設定しています。環境に合わせて、ユーザー名とIPアドレスを変数に設定。

ここの値を引数などで設定するようにすれば、固定された一つのサーバへのログインttlではなく、汎用的に使えるようになります。

②パスワード入力用msgbox

パスワードを入力するためのboxを表示させています。

ttlでは、以下のようにすると、パスワードを入力するためのboxを表示することができます。

passwordbox [メッセージ] [タイトル]
password入力box

上の画像だと、「Get password」がタイトルで、
「パスワード入力 ユーザ:vagrant」がメッセージにあたります。

このメッセージboxに入力した文字列は、システム変数inputstrに格納されます。
(システム変数がわからず苦労した…)

③接続文字列作成&ログイン

connectコマンドの後に、接続情報を渡すとサーバ接続を行うことができます。

22行目では、connectコマンドに渡すための文字列作成を行っています。

sprintf2 coninfo '%s /ssh /2 /auth=password /user=%s /passwd=%s' hostname username inputstr 

sprintf2は、第1引数で指定した変数に、第2変数以降で作成した文字列を入れることができます。書式指定はC言語と同じなのでわかりやすいですね。

作成した変数をconnectに渡して接続完了。

teratermログイン

※connextに渡すときは、passwordではなくpasswdなので注意です。

おわりに

ttlはコマンドを覚えるまでもないかなといった感じですが、作り方だけ覚えておけば後々役に立つタイミングが来そうです。

下記にリンクを貼ったサイトには、もっとセキュアにログインできる方法などが書いてありました。いつか試してみたいと思います。

参考にさせていただいたサイト

↓Qiitaの記事です。

https://qiita.com/clustfe/items/e873f2216724fd7b96fc

↓ttlのコマンドリファレンスです。

https://ttssh2.osdn.jp/manual/4/ja/macro/command/index.html