RDP ログイン

2020/04/24 08:17 Macro::macro サンプル

RDP ログイン

ログインを自動化するマクロは ログイン自動化 にまとめてありますので、そちらを参照してください。

また、解説も付けたものもあります。
このページでは、目的や仕様別にいろいろ作ってみたものを配置します。

サンプルマクロの仕様

Windows 標準のプログラム mstsc を起動し、リモートデスクトップ接続を行います。

マクロサンプル

基本形

目的のサーバに対し、リモートデスクトップを起動するだけのマクロです。
hostname = 'example.jp'

; RDP コマンドフルパス確定処理
RDP = "%windir%\system32\mstsc.exe"
expandenv RDP

sprintf2 CMD "%s /v:%s" RDP hostname
exec CMD

ポート番号指定

基本形に、ポート番号を指定する機能を付けたものです。
hostname = 'example.jp'
portnumber = 3389

; RDP コマンドフルパス確定処理
RDP = "%windir%\system32\mstsc.exe"
expandenv RDP

sprintf2 CMD "%s /v:%s:%d" RDP hostname portnumber
exec CMD

ユーザアカウント指定(パスワード毎回入力)

Windows OS の cmdkey コマンドを使って、アカウント情報を登録したうえでアクセスする機能をつけたものです。
以下のものは、毎回パスワード入力を求めたうえで、登録情報を削除しています。
hostname = 'example.jp'
portnumber = 3389

username = 'user'

passwordbox 'Enter password' 'Login'
password = inputstr

; Windows OS へのアカウント登録
sprintf2 line "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" hostname username password
exec line

; RDP コマンドフルパス確定処理
RDP = "%windir%\system32\mstsc.exe"
expandenv RDP

sprintf2 CMD "%s /v:%s:%d" RDP hostname portnumber
exec CMD

; Windows OS に登録したアカウント情報の削除
pause 20
sprintf2 line "cmdkey /delete:TERMSRV/%s:%d" hostname portnumber
exec line

ユーザアカウント指定(パスワード初回入力)

Windows OS の cmdkey コマンドを使って、アカウント情報を登録したうえでアクセスする機能をつけたものです。
以下のものは、1度パスワード入力したら次回からは不要なうえ、毎回登録情報を削除しています。
hostname = '192.168.1.102'
portnumber = 3389

username = 'jimba'

pPasswdFile = 'password.dat'

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

; Windows OS へのアカウント登録
sprintf2 line "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" hostname username password
exec line

; RDP コマンドフルパス確定処理
RDP = "%windir%\system32\mstsc.exe"
expandenv RDP

sprintf2 CMD "%s /v:%s:%d" RDP hostname portnumber
exec CMD

; Windows OS に登録したアカウント情報の削除
pause 20
sprintf2 line "cmdkey /delete:TERMSRV/%s:%d" hostname portnumber
exec line

パスワードを削除するもの

ユーザ名@ホスト名という構成の名前で登録したパスワードを削除するものです。
定期的にパスワードを変更する運用の場合に必要ですね。
hostname = '192.168.1.102'
username = 'jimba'
pPasswdFile = 'password.dat'

sprintf2 pPasswdName "%s@%s" username hostname
delpassword pPasswdFile pPasswdName

ssh2 ログイン

2020/06/21 18:06 Macro::macro サンプル

ssh2 ログイン

ログインを自動化するマクロは ログイン自動化 にまとめてありますので、そちらを参照してください。

また、解説も付けたものもあります。
このページでは、目的や仕様別にいろいろ作ってみたものを配置します。

サンプルマクロの仕様

公開鍵を登録した Linux サーバに対し、自身がもつ秘密鍵でアクセスします。
鍵は、特に言及しない限りパスフレーズを指定しているものとします。

本手順書での格納先

本手順で利用する各ファイルの格納先です。
環境に合わせて読み替えてください。
利用ファイル一覧
対象ファイル格納先備考
公開鍵"~/.ssh/authorized_keys"アクセス前に登録しておきます。
秘密鍵"C:\Users\Windows\Downloads\key\id_rsa"

マクロサンプル

基本形

パスフレーズは保存せず、毎回入力する形式のマクロです。
hostname = 'example.jp'
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

passwordbox 'Enter password' 'Login'

sprintf2 msg '%s /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname username inputstr keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

サーバ側の待ち受けポート指定時

ssh の待ち受けポートを変更した場合、アクセス時にも適切に指定する必要があります。
hostname = 'example.jp'
portnumb = 22
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

passwordbox 'Enter password' 'Login'

sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname portnumb username inputstr keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

設定ファイル (.ini ファイル) を指定するもの

.ttl ファイルと同じ場所に、hostname と同じ名前で .ini ファイルを格納している場合。
hostname = 'example.jp'
username = 'username'
tcpport  = '22'

sprintf2 ifile "%s.INI" hostname

getdir mdir
makepath inipath mdir ifile

sprintf2 msg "Enter password for user %s" username
passwordbox msg 'Get password'
password = inputstr

sprintf2 msg "%s:%s /ssh /auth=password /user=%s /passwd=%s /F=%s" hostname tcpport username password inipath

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

基本形(パスフレーズなし)

AWS で何も考えずに鍵ペアを作った場合、パスフレーズが設定されていないようです。
外部から EC2 インスタンスにログインする場合、極端にシンプルです。
hostname = 'example.jp'
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

sprintf2 msg "%s /ssh2 /auth=publickey /user=%s /keyfile=%s" hostname username keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

アクセス先ホストをリスト選択するもの

0~4 の 5 つ分、指定する場合です。
strdim axSSH 5
axSSH[0] = '192.168.0.10'
axSSH[1] = '192.168.0.11'
axSSH[2] = '192.168.0.12'
axSSH[3] = '192.168.0.13'
axSSH[4] = '192.168.0.14'

portnumb = 22
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

;; アクセス先選択
sprintf2 msg   "アクセス先を選択してください。"
sprintf2 title "種別選択"

listbox msg title axSSH
hostname = axSSH[result]

passwordbox 'Enter password' 'Login'

sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname portnumb username inputstr keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

アクセス先ホストをリスト選択するもの(パスフレーズなし)

パスフレーズを指定しない条件で、0~4 の 5 つ指定する場合です。
strdim axSSH 5
axSSH[0] = '192.168.0.10'
axSSH[1] = '192.168.0.11'
axSSH[2] = '192.168.0.12'
axSSH[3] = '192.168.0.13'
axSSH[4] = '192.168.0.14'

portnumb = 22
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

;; アクセス先選択
sprintf2 msg   "アクセス先を選択してください。"
sprintf2 title "種別選択"

listbox msg title axSSH
hostname = axSSH[result]

sprintf2 msg "%s:%d /ssh2 /auth=publickey /user=%s /keyfile=%s" hostname portnumb username keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

ポート番号を選択するもの

指定の対象ホストに対し、指定ユーザでポートだけ指定する条件で、0~4 の 5 つ指定する場合です。
hostname = '192.168.0.10'
username = 'username'

strdim axPORT 5
axPORT[0] = '22'
axPORT[1] = '23'
axPORT[2] = '1022'
axPORT[3] = '80'
axPORT[4] = '8080'

;; アクセス先ポート選択
sprintf2 msg   "アクセス先ポートを選択してください。"
sprintf2 title "%s: ポート選択" hostname

listbox msg title axPORT
portnumb = axPORT[result]

passwordbox 'Enter password' 'Login'
Password = inputstr

sprintf2 msg '%s:%s /ssh2 /auth=password /user=%s /passwd="%s"' hostname portnumb username Password

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

基本形(パスワードを保存するもの)

基本形に、パスワード保存機能を付与したものです。

パスワードを、マクロファイルのカレントディレクトリに 'password.dat' という名前で保存します。
キーとなるパスワード名の構成は、ユーザ名@ホスト名にしてあります。

パスワード自体は暗号化されます。
hostname = 'example.jp'
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

sprintf2 pPasswdName "%s@%s" username hostname
getpassword 'password.dat' pPasswdName Password

sprintf2 msg '%s /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname username Password keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg

パスワードを削除するもの

ユーザ名@ホスト名という構成の名前で登録したパスワードを削除するものです。
定期的にパスワードを変更する運用の場合に必要ですね。

一応、パスワードファイルを変数に入れるように変更しています。
hostname = 'example.jp'
username = 'username'
pPasswdFile = 'password.dat'

sprintf2 pPasswdName "%s@%s" username hostname
delpassword pPasswdFile pPasswdName