2019/06/16(日)RDP ログイン自動化マクロ
2021/05/21 06:28
RDP ログイン自動化マクロ
このサンプルマクロは、以下の仕様を満たすものとします。マクロの目的
Windows RDP でのアクセス情報を保持し、同一ホストに対する 2 回目以降のパスワード入力を回避します。また、毎回デフォルト設定で良いか問い合わせ、アクセス情報の変更があった場合も収集情報を保持することとします。
この機能により、アクセス先情報を変更した同一ファイルを複数実行しても、パスワードファイル内でコンフリクトしないようになります。
利用可能環境
Teraterm
依存する Tera Term バージョン:Tera Term 4.71 以降*1利用する Tera Term コマンド:
種別:制御 | Ver | 機能の簡易説明 |
---|---|---|
call | サブルーチンをコールする。 | |
end | マクロの実行そのものを終了する。 | |
pause | 休止する。 | |
return | サブルーチンを抜け、メインルーチンへ戻る。 | |
種別:文字列操作 | Ver | 機能の簡易説明 |
expandenv | 4.71以降 | 環境変数文字列を展開する。 |
sprintf2 | 4.62以降 | フォーマットされた出力を返す。 |
種別:ファイル操作 | Ver | 機能の簡易説明 |
fileclose | ファイルハンドルを閉じる。 | |
fileopen | ファイルを開く。 | |
filewriteln | ファイルに文字列を改行付きで書き込む。 | |
getdir | MACRO の現在のディレクトリを得る。 | |
makepath | フルパス名を作成する。 | |
種別:パスワードコマンド | Ver | 機能の簡易説明 |
getpassword | パスワードを読み出す。 | |
種別:その他 | Ver | 機能の簡易説明 |
exec | アプリケーションを起動する。 | |
4.63以降 | 起動したアプリケーションの終了を待つオプションの追加。 | |
4.78以降 | カレントディレクトリを指定するオプションの追加。 | |
gettime | 現在の時刻を得る。 | |
4.57以降 | 書式を指定するオプションの追加。 | |
4.58以降 | 互換性維持のための仕様変更。 | |
4.74以降 | タイムゾーンを指定するオプションの追加。 | |
4.80以降 | マクロ実行前後でタイムゾーンを復元するよう仕様変更。 | |
inputbox | 文字列を入力するためのダイアログボックスを開く。 | |
4.53以降 | デフォルト入力文字を設定するオプションの追加。 | |
4.54以降 | 特殊文字の解釈を制御するオプションの追加。 |
マクロの使い方
実行タイミング
任意のタイミングで実行可能です。マクロの指定方法
詳細は TeraTerm マクロの使い方 を参照してください。ttpmacro.exe を利用する場合
ファイルの拡張子 .ttl を ttpmacro.exe へ関連付けしておきます。.ttl ファイルをダブルクリック等で実行します。
ttermpro.exe を利用する場合
ttermpro.exe を利用する場合は、起動時にオプションへ /M=xxx.ttl のように指定します。メニューから実行する場合
Tera Term メニューから「コントロール(O)」→「マクロ(M)」を選択します。対象ファイルを選択して「開く」ボタンをクリックすると、実行されます。
コード
著作権情報
このサンプルマクロに関する著作権は、当サイトが所有しています。著作権者
神場 和也ライセンス
修正 BSD ライセンス関連情報
(なし)コード
ファイルダウンロード
rdplogin.zip※ 解凍してご利用ください。
項目 | 内容 |
---|---|
文字コード | UTF-8 (BOM付) |
実行確認バージョン | ローカル側 Tera Term バージョン 4.102 リモート側 Windows 10 バージョン 1903 (OS ビルド 18362.207) |
備考 | 下記コピペ用ソースコードをファイルに保存したものです。 |
コピペ用
以下のソースコードをファイルに保存のうえご利用ください。※ UTF-8 で保存した場合は、Tera Term Ver 4.102 以降で実行する必要があります。詳細は マクロファイルの仕様 を参照してください。
・cmdkey と mstsc.exe を利用してリモートデスクトップ接続を行うマクロ
想定ファイル名:rdplogin.ttl
; RDP login macro of Tera Term ; ; File: rdplogin.ttl ; Description: auto login with SSH2 protocol ; Environment: generic ; Update: 2019/6/16 ; Author: Kazuya Jimba ;;; 環境設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; アクセス先 defaulthost = '192.168.0.1' ;; ポート番号 portnumber = 3389 ;; ユーザ情報 defaultuser = 'administrator' ;; ディレクトリ情報 getdir pBaseDir ;; ファイル情報 pPasswdData = 'password.dat' gettime pLogData "teraterm-rdp-%Y%m%d.log" ;; パス情報 ; パスワード暗号化ファイル makepath pPasswdFile pBaseDir pPasswdData ; Tera Term ログ makepath pPasswdFile pBaseDir pPasswdData makepath pLogFile pBaseDir pLogData ; サブルーチン fnLog 用変数初期化 pOutputLine = '' ; RDP コマンドフルパス確定処理 RDP = "%windir%\system32\mstsc.exe" expandenv RDP ;;; ログイン情報収集 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pOutputLine = 'rdplogin.ttl マクロ開始' call fnLog inputbox 'ユーザ名を入力してください' 'アカウント入力' defaultuser username = inputstr sprintf2 msg "%s でアクセスするホスト名を入力してください。" username inputbox msg 'ホスト名入力' defaulthost hostname = inputstr sprintf2 pPasswdName "%s@%s" username hostname getpassword pPasswdFile pPasswdName Password pOutputLine = '情報収集完了' call fnLog ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pOutputLine = 'メイン処理開始' call fnLog ;; Windows OS へのアカウント登録 sprintf2 line "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" hostname username password exec line ; 実行コマンドの組み立て sprintf2 CMD "%s /v:%s:%d" RDP hostname portnumber sprintf2 pOutputLine "%s へのRDP ログイン実行" hostname call fnLog ;; ログイン exec CMD ; 接続中に登録情報を削除してしまうことがあるため、30秒待機します。 ; バージョン 4.63 以降に追加された exec のオプション wait は、今回除外しています。 pause 30 ; Windows OS に登録したアカウント情報の削除 sprintf2 line "cmdkey /delete:TERMSRV/%s:%d" hostname portnumber exec line ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pOutputLine = 'rdplogin.ttl マクロ終了' call fnLog end ;;; 関数処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; マクロログ取得 :fnLog ; 変数 pOutputLine の内容をログファイルへ出力するサブルーチン。 fileopen fhLog pLogFile 1 ; ログ出力時刻情報取得 gettime pLogTime "%Y/%m/%d %H:%M:%S" ; メッセージ生成 sprintf2 MsgLine "%s %s" pLogTime pOutputLine ; ファイルへ追記して終了 filewriteln fhLog MsgLine fileclose fhLog return