2019/06/15(土)ssh2 ログイン自動化マクロ

はてブ数 2019/06/15 08:29 Macro::macro サンプル

ssh2 ログイン自動化マクロ

このサンプルマクロは、以下の仕様を満たすものとします。

マクロの目的

アクセス情報を保持し、同一ホストに対する 2 回目以降のパスワード入力を回避します。

また、毎回デフォルト設定で良いか問い合わせ、アクセス情報の変更があった場合も収集情報を保持することとします。
この機能により、アクセス先情報を変更した同一ファイルを複数実行しても、パスワードファイル内でコンフリクトしないようになります。

利用可能環境

Teraterm
依存する Tera Term バージョン:Tera Term 4.97 以降*1

利用する Tera Term コマンド:
種別:通信Ver機能の簡易説明
connect接続する。
logcloseTera Term のログを終了する。
loginfo4.73以降Tera Term のログ取得状態を得る
logopenTera Term のログを開始する。
4.61以降ログ再生可能なバイナリオプションの追加。
4.62以降ログを開けたかどうか result を返す仕様の追加。
4.80以降端末バッファをログへ含めるオプションの追加。
4.97以降ログ行頭へタイムスタンプを追記するオプションの追加。
種別:制御Ver機能の簡易説明
endマクロの実行そのものを終了する。
if,then,elseif,else,endif条件分岐
種別:文字列操作Ver機能の簡易説明
sprintf24.62以降フォーマットされた出力を返す。
種別:ファイル操作Ver機能の簡易説明
getdirMACRO の現在のディレクトリを得る。
makepathフルパス名を作成する。
種別:パスワードコマンドVer機能の簡易説明
getpasswordパスワードを読み出す。
種別:その他Ver機能の簡易説明
gettime現在の時刻を得る。
4.57以降書式を指定するオプションの追加。
4.58以降互換性維持のための仕様変更。
4.74以降タイムゾーンを指定するオプションの追加。
4.80以降マクロ実行前後でタイムゾーンを復元するよう仕様変更。
inputbox文字列を入力するためのダイアログボックスを開く。
4.53以降デフォルト入力文字を設定するオプションの追加。
4.54以降特殊文字の解釈を制御するオプションの追加。
messageboxダイアログボックスを開き、ユーザーにメッセージを知らせる。
4.54以降特殊文字の解釈を制御するオプションの追加。
4.60以降キャンセル時にマクロ停止を確認する機能の追加。

マクロの使い方

実行タイミング
任意のタイミングで実行可能です。
マクロの指定方法
詳細は TeraTerm マクロの使い方 を参照してください。
ttpmacro.exe を利用する場合
ファイルの拡張子 .ttl を ttpmacro.exe へ関連付けしておきます。
.ttl ファイルをダブルクリック等で実行します。
ttermpro.exe を利用する場合
ttermpro.exe を利用する場合は、起動時にオプションへ /M=xxx.ttl のように指定します。
メニューから実行する場合
Tera Term メニューから「コントロール(O)」→「マクロ(M)」を選択します。
対象ファイルを選択して「開く」ボタンをクリックすると、実行されます。

*1 : 保存する文字コードによっては Tera Term バージョン 4.102 以降

コード

著作権情報

このサンプルマクロに関する著作権は、当サイト管理者が所有しています。
著作権者
神場 和也
ライセンス
3条項BSDライセンス
関連情報
(なし)

サンプルコード

ファイルダウンロード
ssh2login.zip

※ 解凍してご利用ください。
項目内容
文字コードUTF-8 (BOM付)
実行確認バージョンTera Term Ver 4.102
備考下記コピペ用ソースコードをファイルに保存したものです。
コピペ用
以下のソースコードをファイルに保存のうえご利用ください。

※ UTF-8 で保存した場合は BOM の有無に関係なく、UTF-8 / UTF-16 の .ttl ファイルを読み込める Tera Term Ver 4.102 以降で実行する必要があります。

・ssh2 による自動ログインを行うマクロ
想定ファイル名:ssh2login.ttl
; ssh2 login macro of Tera Term
;
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic
; Update: 2019/6/15
; Author: Kazuya Jimba

;;; 環境設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; アクセス先
defaulthost = '192.168.0.1'

;; ポート番号
portnumber = 22

;; ユーザ情報
defaultuser = 'user'

;; ディレクトリ情報
getdir pBaseDir

;; ファイル情報
pPasswdData = 'password.dat'
gettime pLogData "teraterm-%Y%m%d.log"

;; パス情報
; パスワード暗号化ファイル
makepath pPasswdFile pBaseDir pPasswdData

; Tera Term ログ
makepath pPasswdFile pBaseDir pPasswdData
makepath pLogFile    pBaseDir pLogData

;;; ログイン情報収集 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

inputbox 'ユーザ名を入力してください' 'アカウント入力' defaultuser
username = inputstr

sprintf2 msg "%s でアクセスするホスト名を入力してください。" username
inputbox msg 'ホスト名入力' defaulthost
hostname = inputstr

sprintf2 pPasswdName "%s@%s" username hostname
getpassword pPasswdFile pPasswdName Password

sprintf2 pParameter "%s:%d /ssh /auth=password /user=%s /passwd=%s" hostname portnumber username Password

;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; アクセス時のパラメータ隠匿用
connect '/DS'

;; ログイン
connect pParameter

;; ログイン確認
if result < 2 then
	messagebox 'Not connected.' 'Error'
	end
endif

;; ログ取得(自動取得設定対応)
loginfo logfile
if result == -1 then
	; ログを取得していないので、新たにログ取得を開始する
	logopen pLogFile 0 0 0 1

elseif result & 8 == 0 then
	flags = result
	; タイムスタンプが無効なので、タイムスタンプを有効にして開きなおす。
	logclose
	logopen pLogFile 0 1 flags&4 1 flags&16
endif

;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

end

備考

ログイン失敗時のパスワード削除はしていませんので、パスワード入力を間違えた場合は pPasswdData に定義したファイルから対象ユーザを削除する必要があります。