- 印刷する
スクリプト記述例
- 印刷する
スクリプトの記述例と、スクリプト中の処理の流れ、処理のポイントについて説明します。
説明の都合上、スクリプトの説明単位ごとにセルを分けています。
TeraTerm SSH接続 + suコマンド昇格用スクリプト
オートログインスクリプト | 解説 |
#=============================================== # TeraTerm(SSH)用のオートログインスクリプト(su昇格処理あり) # (c) 20xx NTT TechnoCross Corporation # # 前提条件 # TeraTermのパスが下記レジストリのいずれかに設定されていること # ・HKEY_LOCAL_MACHINE\SOFTWARE\iDoperation\Client\TeraTermPath # ・HKEY_CURRENT_USER\SOFTWARE\iDoperation\Client\TeraTermPath #=============================================== | |
#----------------------------------------------------------------------------- # マクロ/vbsを復号する #----------------------------------------------------------------------------- | |
decrypt TT.sso utf-16 | マクロを復号化する |
if not errorlevel 0 goto decrypt_failure_00 | 復号に失敗した場合、ラベルdecrypt_failure_00に遷移する |
decrypt TTRun.vbs utf-16 | vbsを復号化する |
if not errorlevel 0 goto decrypt_failure_01 | 復号に失敗した場合、ラベルdecrypt_failure_01に遷移する |
#----------------------------------------------------------------------------- # 秘密鍵ファイルをダウンロードする #----------------------------------------------------------------------------- | |
download {ACCOUNT} 0 | ログイン対象のアカウント名をキーとして秘密鍵ファイルをダウンロードする |
if errorlevel 0 goto key_auth | 秘密鍵ファイルのダウンロードに成功した場合、ラベルkey_authに遷移する |
#----------------------------------------------------------------------------- # TeraTermを起動する(ID/PWD認証) #----------------------------------------------------------------------------- | |
:pwd_auth | 「:」からはじまる行はラベルであり、「:」以降の文字列はラベル名を指す |
# アプリケーション起動 waitexec wscript.exe //B "{USERTEMP}TTRun.vbs" "{USERTEMP}TT.sso" "{USERTEMP}" "{TTERM}" 60 1500 4 {IPADDR} {DBPORT} {ACCOUNT} {PASSWORD} {ROOTAC} {ROOTPWD} NULL | TeraTerm用ラッパーを起動。(ラッパーからTeraTermを起動する) |
if execreturn 0 goto sso_continue_02 | TeraTermの起動に成功した場合、ラベルsso_continue_02に遷移する |
if not execreturn 1 goto exec_failure_02 | TeraTermの起動に失敗した場合、ラベルexec_failure_02に遷移する |
#----------------------------------------------------------------------------- # TeraTermを起動する(鍵認証) #----------------------------------------------------------------------------- | |
:key_auth | |
# アプリケーション起動 | |
waitexec wscript.exe //B "{USERTEMP}TTRun.vbs" "{USERTEMP}TT.sso" "{USERTEMP}" "{TTERM}" 60 1500 4 {IPADDR} {DBPORT} {ACCOUNT} {PASSWORD} {ROOTAC} {ROOTPWD} NULL | TeraTerm用ラッパーを起動。(ラッパーからTeraTermを起動する) |
if execreturn 0 goto sso_continue_01 | TeraTermの起動に成功した場合、ラベルsso_continue_01に遷移する |
if not execreturn 1 goto exec_failure_01 | TeraTermの起動に失敗した場合、ラベルexec_failure_01に遷移する |
#----------------------------------------------------------------------------- # オートログイン処理の終了 #----------------------------------------------------------------------------- | |
:sso_continue_01 # 鍵ファイル削除 delete {ACCOUNT} |
|
:sso_continue_02 # マクロ削除 delete TT.sso |
|
# vbs削除 delete TTRun.vbs | vbsを削除する |
# 終了 end | オートログイン処理を終了する |
#-------------------------------------------------------------------------------- # エラーポップアップ処理 #-------------------------------------------------------------------------------- | 以降は、エラー発生時にgoto で遷移した各ラベルの処理 以降の各ラベルの処理は、エラーにあわせたメッセージダイアログの表示と、スクリプトの終了処理をする |
# TeraTerm起動失敗エラー処理(exec) :exec_failure_01 # 鍵ファイル削除 delete {ACCOUNT}
:exec_failure_02 # マクロ削除 delete TT.sso
# vbs削除 delete TTRun.vbs
if execreturn 2102 messagebox "マクロの雛形を読み込めませんでした。" "Err-2102 オートログインエラー" if execreturn 2102 end 2102
if execreturn 2301 messagebox "マクロを出力できませんでした。" "Err-2301 オートログインエラー" if execreturn 2301 end 2301
if execreturn 3001 messagebox "処理結果ファイルを初期化できませんでした。" "Err-3001 オートログインエラー" if execreturn 3001 end 3001
if execreturn 4201 messagebox "パスワードを暗号化できませんでした。" "Err-4201 オートログインエラー" if execreturn 4201 end 4201
if execreturn 5101 messagebox "TERATERM.INIを読み込めませんでした。" "Err-5101 オートログインエラー" if execreturn 5101 end 5101
if execreturn 5301 messagebox "UTF-8のTERATERM.INIを出力できませんでした。" "Err-5301 オートログインエラー" if execreturn 5301 end 5301
if execreturn 5302 messagebox "EUCのTERATERM.INIを出力できませんでした。" "Err-5302 オートログインエラー" if execreturn 5302 end 5302
if execreturn 5303 messagebox "SJISのTERATERM.INIを出力できませんでした。" "Err-5303 オートログインエラー" if execreturn 5303 end 5303
if execreturn 6002 messagebox "ターゲットに接続できませんでした。" "Err-6002 オートログインエラー" if execreturn 6002 end 6002
if execreturn 6003 messagebox "ログインプロンプトを捕捉できませんでした。" "Err-6003 オートログインエラー" if execreturn 6003 end 6003
if execreturn 6004 messagebox "パスワードプロンプトを捕捉できませんでした。" "Err-6004 オートログインエラー" if execreturn 6004 end 6004
if execreturn 6005 messagebox "ユーザ認証が失敗しました。" "Err-6005 オートログインエラー" if execreturn 6005 end 6005
if execreturn 6006 messagebox "パスワードプロンプトを捕捉できませんでした。" "Err-6006 オートログインエラー" if execreturn 6006 end 6006
if execreturn 6007 messagebox "コマンドプロンプトを捕捉できませんでした。" "Err-6007 オートログインエラー" if execreturn 6007 end 6007
if execreturn 6008 messagebox "suが失敗しました。" "Err-6008 オートログインエラー" if execreturn 6008 end 6008
if execreturn 7001 messagebox "マクロの処理待ち合わせがタイムアウトしました。" "Err-7001 オートログインエラー" if execreturn 7001 end 7001
if execreturn 7002 messagebox "処理結果ファイルを読み込めませんでした。" "Err-7002 オートログインエラー" if execreturn 7002 end 7002
messagebox "予期せぬエラーが発生しました。" "Err-9999 シングルサイオンエラー" end 9999
# マクロ復号エラー処理(decrypt) :decrypt_failure_00 delete TT.sso delete TTRun.vbs messagebox "TeraTermマクロの復号に失敗しました。" "Err-200 オートログインエラー" end 200
# vbs復号エラー処理(decrypt) :decrypt_failure_01 delete TT.sso delete TTRun.vbs messagebox "vbsの復号に失敗しました。" "Err-201 オートログインエラー" end 201 |
リモートデスクトップ接続・ドメイン認証用
オートログインスクリプト | 解説 |
#====================================================== # リモートデスクトップ接続でサーバへリモートセッションでドメインログオンするスクリプト # (c) 20xx NTT TechnoCross Corporation # # 前提条件 # wscript.exeのパスが環境変数PATHに設定されていること #====================================================== | |
# マウスロック開始 mouselock on keyboardlock on | スクリプト実行中のマウス操作とキーボード操作を禁止する |
#----------------------------------------------------------------------------- # vbsファイルを復号する #----------------------------------------------------------------------------- | |
decrypt RDPRun.vbs utf-16 | vbsファイルを復号化する |
if not errorlevel 0 goto decrypt_failure_00 | 復号化に失敗した場合、ラベルdecrypt_failure_00に遷移する |
#----------------------------------------------------------------------------- # リモートデスクトップ接続を起動する。 #----------------------------------------------------------------------------- | |
# アプリケーション起動 cd "{INSTALL}" waitexec wscript.exe //B "{USERTEMP}RDPRun.vbs" ".\bin\tool\idoperation.rdp" "{IPADDR}" "{DOMAINNAME}" "{DOMAINAC}" "{DOMAINPWD}" "{INSTALL}" | リモートデスクトップ接続ラッパーを起動。(ラッパーからリモートデスクトップ接続を起動する) |
if not execreturn 0 goto exec_failure_00 | リモートデスクトップの起動に失敗した場合、ラベルexec_failure_00に遷移する。 |
# リモートデスクトップ接続の起動に 1.5秒(1500ミリ秒)待つ #環境によって調整要 wait 1500 | 起動に1.5秒(1500ミリ秒)待つ |
# 入力モードを「半角モード」にする imeoff | IMEを半角入力モードにする |
#----------------------------------------------------------------------------- # リモート接続の警告ダイアログが表示された場合の処理 # (接続するサーバが、端末から初めて接続する場合などに表示される) #----------------------------------------------------------------------------- | 「リモートデスクトップ」ダイアログに対する処理 |
![]() | |
# リモート接続の警告ダイアログが表示されたか、確認する strcmp "リモート デスクトップ接続" 13488 "このコンピューターへの接続について今後確認しない(&O)" | 「リモートデスクトップ接続」ダイアログ中のオートメーションID 13488 の文字列を比較する |
if not errorlevel 0 goto sso_continue1 | 比較結果が合致していない場合、ラベルsso_continue1に処理を遷移する |
# "リモート デスクトップ接続"ダイアログにフォーカスを設定する focus "リモート デスクトップ接続" | 「リモートデスクトップ接続」ダイアログにフォーカスを設定する |
if not errorlevel 0 goto focus_failure_00 | フォーカスが設定出来ない場合、ラベルfocus_failure_00へ遷移する |
# 次回以降、このダイアログが表示されないように、チェックボックスにチェックを入れる # checkbox"このコンピューターへの接続について今後確認しない(O)" に対し ALT+O キーを押す | |
wait 500
sendkeys %O | 0.5秒(500ミリ秒)待つ
ALT+O キーを押す |
# button"接続(N)" に対し ALT+N キーを押す wait 500
sendkeys %N
wait 500 | 0.5秒(500ミリ秒)待つ
ALT+N キーを押す
0.5秒(500ミリ秒)待つ |
#--------------------------------------- # オートログイン処理継続 #--------------------------------------- :sso_continue1 | 「:」からはじまる行はラベルであり、「:」以降の文字列はラベル名を指す |
#----------------------------------------------------------------------------- # 【英語OS対応】 # リモート接続の警告ダイアログが表示された場合の処理 # (接続するサーバが、端末から初めて接続する場合などに表示される) #----------------------------------------------------------------------------- | 英語OSの「リモートデスクトップ」ダイアログに対する処理 |
# リモート接続の警告ダイアログが表示されたか、確認する strcmp "Remote Desktop Connection" 13488 "D&on't ask me again for connections to this computer" if not errorlevel 0 goto sso_continue2 # "リモート デスクトップ接続"ダイアログにフォーカスを設定する focus "Remote Desktop Connection" if not errorlevel 0 goto focus_failure_00 # 次回以降、このダイアログが表示されないように、チェックボックスにチェックを入れる # checkbox "D&on't ask me again for connections to this computer" に対し ALT+O キーを押す wait 500 sendkeys %O # 「Connect]ボタン(ControlID=1)に対して、マウスクリックイベントを送る # button "Connect(N)" に対し ALT+N キーを押す wait 500 sendkeys %N wait 500 | |
#--------------------------------------- # オートログイン処理継続 #--------------------------------------- :sso_continue2 | |
#----------------------------------------------------------------------------- # グループポリシーによりパスワード入力を求められる場合の処理 #----------------------------------------------------------------------------- | グループポリシーに対する処理 |
# Windows セキュリティダイアログにパスワード入力欄が存在するか確認 strcmp "Windows セキュリティ" "PasswordField_2" "パスワード" | Windows セキュリティダイアログにパスワード入力欄が存在するか確認 |
if not errorlevel 0 goto sso_continue3 | 存在しない場合、ラベルsso_continue3に処理を遷移する |
# "Windows セキュリティ"ダイアログにフォーカスを設定する focus "Windows セキュリティ" | 「Windows セキュリティ」ダイアログにフォーカスを設定する |
if not errorlevel 0 goto focus_failure_00 | フォーカスが設定出来ない場合、ラベルfocus_failure_00へ遷移する |
# パスワード入力 wait 500
sendkeys {DOMAINPWD} true | 0.5秒(500ミリ秒)待つ
パスワードを入力する |
# button"OK" に対し ALT+O キーを押す wait 500
sendkeys %o
wait 500 | 0.5秒(500ミリ秒)待つ
ALT+o キーを押す 0.5秒(500ミリ秒)待つ |
#--------------------------------------- # オートログイン処理継続 #--------------------------------------- :sso_continue3 | |
#----------------------------------------------------------------------------- # 【英語OS対応】 # グループポリシーによりパスワード入力を求められる場合の処理 #----------------------------------------------------------------------------- | 英語OSのグループポリシーに対する処理 |
# Windows セキュリティダイアログにパスワード入力欄が存在するか確認 strcmp "Windows Security" "PasswordField_2" "Password"
if not errorlevel 0 goto sso_continue4
# "Windows セキュリティ"ダイアログにフォーカスを設定する focus "Windows Security" if not errorlevel 0 goto focus_failure_00
# パスワード入力 wait 500 sendkeys {DOMAINPWD} true
# button"OK" に対し ALT+O キーを押す wait 500 sendkeys %o wait 500 | |
#--------------------------------------- # オートログイン処理継続 #--------------------------------------- :sso_continue4 | |
#----------------------------------------------------------------------------- # オートログイン処理の終了 #----------------------------------------------------------------------------- | |
# 入力モードを元に戻し、マウスロック解除 imerestore mouselock off keyboardlock off |
マウスロックを解除する キーボードロックを解除する |
# vbsファイルの削除 delete RDPRun.vbs | vbsファイルを削除する |
# 終了 end | スクリプトを終了する |
#----------------------------------------------------------------------------- # エラーポップアップ処理 #----------------------------------------------------------------------------- | 以降は、エラー発生時にgoto で遷移した各ラベルの処理
以降の各ラベルの処理は、エラーにあわせたメッセージダイアログの表示と、スクリプトの終了処理をする |
# リモートデスクトップ接続起動失敗エラー処理(exec) :exec_failure_00 imerestore mouselock off keyboardlock off delete RDPRun.vbs messagebox "リモートデスクトップ接続の起動に失敗しました。" "Err-100 オートログインエラー" end 100
# vbs復号エラー処理(decrypt) :decrypt_failure_00 imerestore mouselock off keyboardlock off messagebox "vbsファイルの復号に失敗しました。" "Err-200 オートログインエラー" end 200
# リモート接続の警告ダイアログフォーカス設定失敗エラー処理(focus) :focus_failure_00 imerestore mouselock off keyboardlock off delete RDPRun.vbs messagebox "リモートデスクトップ接続の警告ダイアログにフォーカスを設定することが出来ませんでした。" "Err-300 オートログインエラー" end 300 |