忍者ブログ

◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例

   
カテゴリー「Windows Script」の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【BAT】RDPバッチ【例】

@echo off
mode con: cols=80 lines=30
REM ## カラーを設定
REM ## color e1
color 0a
set Kankyo="環境"
set Server="サーバ名"
set Name="ホスト名"
set Username="ユーザ名"
set Password="パスワード"
echo .
echo ***************
echo 【以下の接続先情報を確認してください。】
echo 環境名 : %Kankyo%
echo サーバ名: %Server%
echo ホスト名: %Name%
echo ユーザ名: %Username%
echo ***************
pause
REM ## カラーを設定
REM ## color 3f
color 9e
cmdkey /generic:TERMSRV/%Server% /user:%Username% /pass:%Password%
start mstsc /v:%Server%
timeout 3
cmdkey /delete:TERMSRV/%Server%
PR

【BAT】WinMerge比較

※WinMergeでフォルダ単位で比較する際の自動化スクリプト
 ①の引数部分は必要に応じて複数行コピーして適宜書き換える
 ②のbatファイルのWinMergeU.exeの格納場所を適宜書き換える
 【使い方】①、②のbatファイルを同じ場所に置き、①のバッチをダブルクリックで実行する
 ━━━━━━━━━━━━━━━
 ① WinMerge比較.bat
 ━━━━━━━━━━━━━━━
@echo off
REM ==========================
REM ■プロンプト画面サイズ
REM --------------------------
mode com: cols=250 lines=100
REM ==========================
REM ■文字コード
REM --------------------------
echo .
chcp 932
echo .
REM ==========================
REM ■日付と時刻の取得
REM --------------------------
set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
set hhmmss=%time::=%
set hhmmss=%hhmmss:~0,6%
echo *************************
echo 【作業日時】
echo -------------------------
echo %YYYYMMDD%_%hhmmss%
echo *************************
echo .
timeout 5
REM ==========================
REM ■start_EXE.batを呼び出し実行
REM --------------------------
echo *************************
echo 【比較処理 ⇒ 開始】
echo *************************
echo .
REM --------------------------
REM ## 引数部分は必要に応じて複数行コピーして適宜書き換える
REM ## Arg_0=<start_EXE.bat>
REM ## Arg_1=<比較左側フォルダ>
REM ## Arg_2=<比較右側フォルダ>
REM ## Arg_3=<比較対象の格納先>
REM ## Arg_4=<比較結果の出力先>
set Arg_0=%~dp0start_EXE.bat
set Arg_1=ORIGINAL
set Arg_2=DIFF
set Arg_3=%~dp0\比較データ
set Arg_4=%~dp0\比較結果_%YYYYMMDD%_%hhmmss%
set Arg_a=TEST
set Arg_b=01
set Arg_c=02
REM --------------------------
echo *************************
echo 【引数の表示】
echo -------------------------
echo 引数0:%Arg_0%
echo 引数1:%Arg_1%
echo 引数2:%Arg_2%
echo 引数3:%Arg_3%
echo 引数4:%Arg_4%
echo 引数A+引数B:%Arg_a%%Arg_b%
echo 引数A+引数C:%Arg_a%%Arg_c%
echo *************************
echo .
timeout 5
REM ==========================
REM ■比較対象のフォルダ作成
REM --------------------------
cd /d %USERPROFILE%\Desktop
mkdir %Arg_3%\%Arg_1%
mkdir %Arg_3%\%Arg_2%
echo *************************
echo 比較対象データを以下に格納してください
echo -------------------------
echo 比較元データ:%Arg_1%
echo 比較先データ:%Arg_2%
echo *************************
echo .
echo 実行する場合⇒「Enter」/キャンセルする場合⇒「Ctrl」+「C」
pause
start %Arg_0% %Arg_1%\%Arg_a%%Arg_b% %Arg_2%\%Arg_a%%Arg_b% %Arg_3% %Arg_4%
start %Arg_0% %Arg_1%\%Arg_a%%Arg_b% %Arg_2%\%Arg_a%%Arg_c% %Arg_3% %Arg_4%
start %Arg_0% %Arg_1%\%Arg_a%%Arg_b% %Arg_1%\%Arg_a%%Arg_c% %Arg_3% %Arg_4%
echo .
echo *************************
echo 【比較処理 ⇒ 終了】
echo *************************
timeout 5
exit
 ━━━━━━━━━━━━━━━
 ② start_EXE.bat
 ━━━━━━━━━━━━━━━
@echo off
REM ==========================
REM ■プロンプト画面サイズ
REM --------------------------
mode com: cols=150 lines=50
REM ==========================
REM ■ローカル変数開始(遅延展開変数)
REM --------------------------
setlocal ENABLEDELAYEDEXPANSION
REM ==========================
REM ■画面カラー設定
REM --------------------------
color 17
cls
REM ==========================
REM ■引数表示
REM --------------------------
echo -------------------------
echo 【WinMerge格納場所】%0
echo 【比較左側フォルダ】%1
echo 【比較右側フォルダ】%2
echo 【比較対象の格納先】%3
echo 【比較結果の出力先】%4
echo -------------------------
echo .
timeout 3
echo .
echo ##########################
REM ==========================
REM ■変数設定(引数の格納)
REM --------------------------
REM set XxX_EXE="C:\Program Files (x86)\WinMerge\WinMergeU.exe"
set XxX_EXE="C:\Program Files\WinMerge\WinMergeU.exe"
set XxX_Left=%1
set XxX_Right=%2
set XxX_Folder=%3
set XxX_WMrg=%4
REM ==========================
REM ■比較対象の格納先へ移動
REM --------------------------
cd /d %XxX_Folder%
echo .
echo -------------------------
echo 【作業場所】%CD%
echo -------------------------
echo .
timeout 3
echo .
echo ##########################
echo .
REM ==========================
REM ■変数設定(比較結果の出力先)
REM --------------------------
mkdir %XxX_WMrg%
REM ==========================
REM ■変数設定(レポート出力ファイル:HTML)
REM --------------------------
set XxX_OUT=%XxX_WMrg%\%XxX_Right%.html
REM ==========================
REM ■WinMerge比較実行⇒結果レポート出力
REM --------------------------
start " " %XxX_EXE% /r /wl /wr %XxX_Left% %XxX_Right% /ignorews /ignoreblanklines /ignoreeol /noninteractive /noprefs /cfg Settings/DirViewExpandSubdirs=1 /cfg ReportFiles/ReportType=2 /cfg ReportFiles/IncludeFileCmpReport=1 /r /u /or %XxX_OUT%
REM ==========================
REM ■出力結果の表示
REM --------------------------
color 0a
echo .
echo -------------------------
echo 【比較結果のレポートファイル】
echo %XxX_OUT%
echo -------------------------
echo .
echo ##########################
echo .
timeout 5
REM ==========================
REM ■ローカル変数終了
REM --------------------------
endlocal
exit

【BAT】NetWork設定

IPアドレス設定バッチスクリプト(①から②を呼び出して実行する)
★★★ ①「【ネットワーク設定変更】.bat」 ★★★
@echo off
REM ==========================
REM ■ ループ処理で背景カラー変更
for /l %%a in (1,1,9) do (
  color %%aF
)
REM ==========================
REM ■ ネットワーク設定画面の表示
ncpa.cpl
REM ==========================
REM ■ 変数設定
set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
REM ==========================
REM ■ バッチ呼出し処理(管理者権限)【引数渡し】
powershell start-process .\IP_set.bat "192.168.x.ZZ" -Verb runas
REM ==========================
REM ■ ファイル初期化
type nul > .\IPCONFIG_%YYYYMMDD%.txt
REM ==========================
REM ■ ネットワーク設定をファイルに書き込む
echo ------------------------- >> .\IPCONFIG_%YYYYMMDD%.txt
REM ## ipconfig /all >> .\IPCONFIG_%YYYYMMDD%.txt
REM ## echo ------------------------- >> .\IPCONFIG_%YYYYMMDD%.txt
netsh interface ipv4 show config >> .\IPCONFIG_%YYYYMMDD%.txt
echo ------------------------- >> .\IPCONFIG_%YYYYMMDD%.txt
exit
★★★ ②「IP_set.bat」 ★★★
@echo off
REM ##########################
REM ■ 開始処理
REM ##########################
REM ==========================
REM ■ DOSプロンプト画面サイズ
mode con: cols=80 lines=50
REM ==========================
REM ■ ローカル変数:開始
setlocal ENABLEDELAYEDEXPANSION
REM ==========================
REM ■ 変数設定
set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
set IFNAME="イーサネット"
set IPADDRESS=192.168.x.XX
set SUBNETMASK=255.255.255.0
set DEFAULTGW=192.168.x.x
REM ==========================
REM ■ 引数の値を変数にセット
set IPADDRESS=%1
REM ==========================
color a9
echo.
echo *************************
echo 【文字コード】
echo -------------------------
chcp 932
echo *************************
echo.
echo *************************
echo 【日付表示:YYYYMMDD形式】
echo -------------------------
echo %date:~0,4%%date:~5,2%%date:~8,2%
echo *************************
echo.
Timeout 1
cls
color f9
echo.
echo -------------------------
echo 【現在のIPアドレス設定】
echo -------------------------
echo netsh interface ipv4 show config %IFNAME%
netsh interface ipv4 show config %IFNAME%
echo.
echo -------------------------
echo ⇒ネットワーク設定情報を「IPCONFIG_%YYYYMMDD%.txt」へ出力
echo -------------------------
echo.
pause
goto MENU_START
:MENU_Zero
cls
color 17
echo.
echo -------------------------
echo 【現在のIPアドレス設定】
echo -------------------------
echo netsh interface ipv4 show config %IFNAME%
netsh interface ipv4 show config %IFNAME%
echo -------------------------
pause
REM ##########################
REM ■ メニュー表示
REM ##########################
:MENU_START
Timeout 1
cls
color 0f
echo *************************
echo 【メニュー】
echo *************************
echo * MENU
echo *
echo * 【0】: IPアドレス確認
echo * 【1】: DHCP設定
echo * 【2】: IPアドレス設定
echo *
echo * 【99】: 終了
echo *
echo *************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==0 (goto MENU_Zero)
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ##########################
REM ■ DHCP設定
REM ##########################
:MENU_START_01
cls
color 17
echo.
echo -------------------------
echo 【DHCP設定】
echo.
echo IPアドレス:DHCP
echo サブネット:DHCP
echo ゲートウェイ:DHCP
echo.
echo -------------------------
echo 【y】: 設定
echo 【n】: キャンセル
echo ⇒上記以外はメニューに戻る
echo -------------------------
REM ==========================
REM ■ キー入力判定
set INPUT_KEY=nul
set /p INPUT_KEY=キー入力:
if '%INPUT_KEY%'=='n' goto MENU_END
if '%INPUT_KEY%'=='y' goto MENU_START_DHCP
goto MENU_START
:MENU_START_DHCP
cls
echo DHCP
netsh interface ipv4 set address %IFNAME% dhcp
netsh interface ipv4 set dns %IFNAME% dhcp
echo.
echo -------------------------
echo 【設定後のIPアドレス表示】
echo -------------------------
echo netsh interface ipv4 show config %IFNAME%
netsh interface ipv4 show config %IFNAME%
echo -------------------------
pause
goto MENU_END
REM ##########################
REM ■ STATIC設定
REM ##########################
:MENU_START_02
cls
color 9f
echo.
REM ## echo -------------------------
REM ## echo 【設定値の入力】
REM ## echo -------------------------
REM ## echo.
REM ## REM ==========================
REM ## REM ■ 変数初期化
REM ## set IP_1=
REM ## set IP_2=
REM ## set IP_3=
REM ## set IP_4=
REM ## REM ==========================
REM ## REM ■ 入力した値を変数に格納
REM ## set /p IP_1=第1オクテット:
REM ## set /p IP_2=第2オクテット:
REM ## set /p IP_3=第3オクテット:
REM ## set /p IP_4=第4オクテット:
REM ## REM ==========================
REM ## REM ■ IP_1~IP_4を結合してIPADDRESSに格納する
REM ## set IPADDRESS=%IP_1%.%IP_2%.%IP_3%.%IP_4%
REM ## REM ==========================
echo -------------------------
echo 【IPアドレス設定】
echo.
echo IPアドレス:%IPADDRESS%
echo サブネット:%SUBNETMASK%
echo ゲートウェイ:%DEFAULTGW%
echo.
color 17
echo -------------------------
echo 【y】: 設定
echo 【n】: キャンセル
echo 【m】: メニューに戻る
echo ⇒上記以外は設定値の再入力
echo -------------------------
REM ==========================
REM ■ キー入力判定
set INPUT_KEY=nul
set /p INPUT_KEY=キー入力:
if '%INPUT_KEY%'=='n' goto MENU_END
if '%INPUT_KEY%'=='m' goto MENU_START
if '%INPUT_KEY%'=='y' goto MENU_START_STATIC
goto MENU_START_02
:MENU_START_STATIC
netsh interface ipv4 set address %IFNAME% static %IPADDRESS% %SUBNETMASK% %DEFAULTGW% 1
REM ## netsh interface ipv4 set dns %IFNAME% static %DEFAULTGW% primary validate=no
netsh interface ipv4 set dns %IFNAME% dhcp
echo.
echo -------------------------
echo 【設定後のIPアドレス表示】
echo -------------------------
echo netsh interface ipv4 show config %IFNAME%
netsh interface ipv4 show config %IFNAME%
echo -------------------------
pause
goto MENU_END
REM ##########################
REM ■ エラー処理
REM ##########################
:MENU_ERROR
cls
color 0c
echo *************************
echo 【エラー(メニューに戻る)】
echo *************************
goto MENU_START
REM ##########################
REM ■ 終了処理:MENU_END
REM ##########################
cls
color 0a
echo *************************
echo 【終了】
echo *************************
REM ==========================
REM ■ ローカル変数:終了
endlocal
Timeout 1
exit

【BAT】service表示

@echo off
setlocal
REM ==========================
REM サービス表示名
set DISPLAY_NAME=
REM サービス名
set SERVICE_NAME=
REM サービスの起動状態
set SERVICE_STAT=
REM ==========================
set DISPLAY_NAME="Windows Time"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Windows Update"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Themes"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Windows Search"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
goto END
REM ==========================
::: サービス表示名を元にサービス名を取得
:::
::: 必要な環境変数
:::  DISPLAY_NAME
::: 設定される環境変数
:::  SERVICE_NAME
:::
REM --------------------------
:GET_SERVICE_NAME
set SERVICE_NAME=
if not defined DISPLAY_NAME exit /b 1
set CMD=sc getkeyname %DISPLAY_NAME%
for /f "usebackq tokens=1,2,3" %%a in (`%CMD%`) do (
REM echo DEBUG: a=%%a b=%%b c=%%c
if "名前" == "%%a" (
set SERVICE_NAME=%%c
)
)
if not defined SERVICE_NAME (
REM サービス名が取得できなければエラー
echo ERROR: サービス名の取得に失敗しました(%DISPLAY_NAME%)
exit /b 1
)
exit /b 0
REM ==========================
::: サービス名からサービスの状態を取得
:::
::: 必要な環境変数
:::  SERVICE_NAME
::: 設定される環境変数
:::  SERVICE_STAT
:::
REM --------------------------
:GET_SERVICE_STAT
set SERVICE_STAT=
if not defined SERVICE_NAME exit /b 1
set CMD=sc query %SERVICE_NAME%
for /f "usebackq tokens=1,2,3,4" %%a in (`%CMD%`) do (
REM echo DEBUG: a=%%a b=%%b c=%%c d=%%d
if "STATE" == "%%a" (
set SERVICE_STAT=%%d
)
)
if not defined SERVICE_STAT (
REM 状態が取得できなければエラー
echo ERROR: サービスの状態取得に失敗しました(%SERVICE_NAME%)
exit /b 1
)
exit /b 0
REM ==========================
::: 取得したサービスの状態を表示
:::
::: 必要な環境変数
:::  DISPLAY_NAME
:::  SERVICE_STAT
::: 設定される環境変数
:::  なし
:::
REM --------------------------
:DISPLAY_STATUS
if not defined DISPLAY_NAME (
echo ERROR: サービス表示名が設定されていません
exit /b 1
)
REM カラーのため設定
for /f %%i in ('cmd /k prompt $e^<nul') do set ESC=%%i
if defined SERVICE_STAT (
REM %変数:~1,-1%は最初と最後の1文字を除いて展開する
if %SERVICE_STAT% == RUNNING (
REM 緑字
echo %DISPLAY_NAME:~1,-1% (%SERVICE_NAME%^) [%ESC%[92m%SERVICE_STAT%%ESC%[0m^]
) else (
REM 赤字
echo %DISPLAY_NAME:~1,-1% (%SERVICE_NAME%^) [%ESC%[91m%SERVICE_STAT%%ESC%[0m^]
)
) else (
REM %変数:~1,-1%は最初と最後の1文字を除いて展開する
echo %DISPLAY_NAME:~1,-1% ^(%SERVICE_NAME%^) ^[ UNKNOWN ^]
)
exit /b 0
REM ==========================
::: バッチ終了処理
REM --------------------------
:END
echo.
pause
REM --------------------------
endlocal
exit /b 0

【BAT】Serverログイン用

REM ## ファイル名 ⇒ 「Serverログイン用.bat」
@echo off
REM ==============================
REM ■ DOSプロンプト画面サイズ
mode con: cols=110 lines=60
REM ==============================
echo =================================
echo 【サーバ_LOGIN.bat】を開始します
echo =================================
Timeout 1
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
:MENU_Zero
cls
color 17
REM ## 文字コード設定
chcp 932
REM ## chcp 65001
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set Get_HOST=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\TTL_LOGIN.ttl
set TTL_File=%CURRENT_DIR%\TTL_LOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## LSTファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.lst
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.lst
REM ## TeraTermマクロのEXEファイル格納
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
REM ╋↓ 環境に合わせてパスを設定 ↓╋
cd /d "C:\Program Files (x86)\teraterm"
REM ╋↑ 環境に合わせてパスを設定 ↑╋
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% ⇒ ■ カレントディレクトリ
echo RDP File : %RDP_File% ⇒ ■ RDP用Script
echo TTL File : %TTL_File% ⇒ ■ SSH用Script
echo INI File : %INI_File% ⇒ ■ 設定iniファイル
echo LST File : %TargetFILE_01% ⇒ ■ Windowsサーバ情報
echo LST File : %TargetFILE_02% ⇒ ■ Linuxサーバ情報
echo TeraTerm : %Change_DIR% ⇒ ■ TeraTerm格納先フォルダ
echo EXE File : %Macro_EXE% ⇒ ■ マクロ実行ファイル
echo -----------------------------
REM ## Timeout 2
Timeout 1
REM ## pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
REM ╋ メニュー画面スキップ/非表示 ╋
goto MENU_START_02
REM ╋ メニュー画面スキップ/非表示 ╋
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
REM ## echo *  【0】: 読込ファイルの表示
echo *  【1】: リモートデスクトップ 接続
echo *  【2】: Tera Term 接続
echo *
echo * 【99】: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==0 (goto MENU_Zero)
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
REM ───────────────
REM ## パラメータの設定
set READ_DATA=
set READ_DATA=%TargetFILE_01%
set FUNCTION_NAME=
set FUNCTION_NAME=:RDP
REM ## パラメータを共通処理に引き渡す
goto MENU_COMMON
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
REM ───────────────
REM ## パラメータの設定
set READ_DATA=
set READ_DATA=%TargetFILE_02%
set FUNCTION_NAME=
set FUNCTION_NAME=:TERATERM
REM ## パラメータを共通処理に引き渡す
goto MENU_COMMON
REM ★★★★★★★★★★★★★★★
REM ## 空ENTERキー無効(メニュー再表示)
:MENU_COMMON_R
cls
color 17
echo *****************************
echo 空ENTERキー無効(メニュー再表示)
echo *****************************
Timeout 1
REM ★★★★★★★★★★★★★★★
REM ## 共通処理
:MENU_COMMON
cls
REM ## 接続メニュー判定
if %FUNCTION_NAME%==:RDP (
  color f0
  echo *****************************
  echo 【リモートデスクトップ接続先】
  echo *****************************
  echo * RDP MENU
  echo *
)
if %FUNCTION_NAME%==:TERATERM (
  color 0e
  echo *****************************
  echo 【TeraTerm接続先】
  echo *****************************
  echo * TERATERM MENU
  echo *
)
REM ## LSTファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%READ_DATA%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_COMMON_R
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## LSTファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%READ_DATA%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set Get_HOST=%%b
    set Get_VALUE=%%d
    set GET_AUTH=%%f
    set GET_User=%%h
    set GET_Password=%%i
    REM ## ループ終了
    goto SkipFOR
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%READ_DATA%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set Get_HOST=%%b
  set Get_VALUE=%%d
  set GET_AUTH=%%f
  set GET_User=%%h
  set GET_Password=%%i
  REM ## ループ終了
  goto SkipFOR
)
REM ───────────────
REM ## 関数呼び出し
:SkipFOR
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ -- ログイン方法 -- %FUNCTION_NAME% 接続 %Get_HOST%
echo ┃────────────────────────────────────
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%GET_User% 】
echo ┃────────────────────────────────────
echo ┃ 【 引数の値 ( %GET_Password% / %GET_AUTH% / %Get_VALUE% )】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call %FUNCTION_NAME% %Get_IP% %GET_User% %GET_Password% %GET_AUTH% %Get_VALUE% %Get_HOST%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
set xLOGINxAUTH=%4
set xLOGINxVALUE=%5
set xLOGIN_HOST=%6
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】【ホスト名:%xLOGIN_HOST%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
echo -----------------------------
REM pause
REM Timeout 1
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE% %xLOGIN_HOST%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER=
set PS_Args=
set xLOGINxAUTH=
set xLOGINxVALUE=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
set xLOGINxAUTH=%4
set xLOGINxVALUE=%5
set xLOGIN_HOST=%6
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】【ホスト名:%xLOGIN_HOST%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
echo -----------------------------
REM pause
REM Timeout 1
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE% %xLOGIN_HOST%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER=
set PS_Args=
set xLOGINxAUTH=
set xLOGINxVALUE=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 1
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 1
exit

【TTL】RDP接続用

  timeout=10                           ;; ■ タイムアウト値の設定
 ;; ************************************
 ;; ■ 変数の設定
 ;; ************************************
  paramIP = '192.168.1.xxx'                   ;; ■ 接続先IPアドレス
  paramUSER = 'Administrator'              ;; ■ ユーザー名
  paramPASSWORD = 'PW.dat'             ;; ■ パスワードのdatファイル
  DECRYPT = ''                         ;; ■ 複合化パスワード変数の初期化
 ;; ************************************
 ;; ■ 復号化したパスワード文字列の取得
 ;; ************************************
  getpassword ParamPASSWORD ParamUSER DECRYPT ;; ■ 複合化パスワード取得
 ;; ************************************
 ;; ■ 処理実行前の YES or NO 選択
 ;; ************************************
  yesnobox 'リモートデスクトップ接続しますか?' '【 Yes / No 確認】'
  if result = 0 then
    end
  endif
 ;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
 ;;╋ RDP接続の処理
 ;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
 ;; ************************************
 ;; ■ 資格情報の作成
 ;; ************************************
  sprintf2 KEYINFO "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" ParamIP ParamUSER DECRYPT
  exec KEYINFO
 ;; ************************************
 ;; ■ 環境変数にMSTSC格納
 ;; ************************************
  RDPPATH = "%windir%\system32\mstsc.exe"
  expandenv RDPPATH
 ;; ************************************
 ;; ■ リモートデスクトップ接続コマンド実行
 ;; ************************************
  sprintf2 EXEPATH "%s /v:%s" RDPPATH ParamIP
  exec EXEPATH
 ;; ************************************
 ;; ■ 待機時間
 ;; ************************************
  statusbox DECRYPT '【パスワード】'
  pause 15
 ;; ************************************
 ;; ■ 資格情報の削除
 ;; ************************************
  sprintf2 KEYINFO "cmdkey /delete:TERMSRV/%s" ParamIP
  exec KEYINFO
  end                                ;; ■ TeraTermマクロ終了

【使い方】TTLログインScript

【事前準備】
 適当な場所に任意のフォルダを作成し、以下のファイルを格納する
 (TeraTermのログ設定は空欄にして無効化しておくこと)
 ・【BAT】TTLログインScriptのファイル ⇒ Serverログイン用.bat
 ・【TTL】TTLログインScriptのファイル ⇒ TTL_LOGIN.ttl
 ・TeraTerm設定ファイル ⇒ TERATERM_2.INI TeraTerm設定を保存したINIファイルをコピーして名前を変えて用意する)
 ・Windowsサーバ一覧ファイル ⇒ RemoteDesktop.lst
 ・Linuxサーバ一覧ファイル ⇒ SSHconnection.lst
 ・パスワードファイル ⇒ WindowsPW.dat(Windows用)
 ・パスワードファイル ⇒ LinuxPW.dat(Linux用)
 
【例】RemoteDesktop.lstの記述例(リモートデスクトップの場合)
 192.168.0.xxx,<ホスト名>,<サーバ名>,RDP,<備考>,--,<説明>,<ユーザ名>,WindowsPW.dat
 
【例】SSHconnection.lstの記述例(SSH接続の場合)
 192.168.0.xxx,<ホスト名>,<サーバ名>,<root切替のパスワードファイル>,<備考>,password,<説明>,<ユーザ名>,LinuxPW.dat
 192.168.0.xxx,<ホスト名>,<サーバ名>,<root切替のパスワードファイル>,<備考>,challenge,<説明>,<ユーザ名>,LinuxPW.dat

【例】SSHconnection
.lstの記述例(任意の文字列で判定したい場合)
 192.168.0.xxx,<ホスト名>,<サーバ名>,任意の文字列,<備考>,password,<説明>,<ユーザ名>,LinuxPW.dat
 
【例】パスワードファイルの作り方
 以下のスクリプト(パスワード暗号化ファイル作成ツール.ttl)を実行する
 ;; *********************************
 ;; * Windowsパスワード暗号化
 ;; ────────────────
  ENCRYPT = 'WindowsPW.dat'   ;ファイル名
  IDENT_User = '<ユーザ名>'   ;ユーザ名
  PASS_WORD = '<パスワード>'   ;パスワード
  setpassword ENCRYPT IDENT_User PASS_WORD ;暗号化ファイル出力
 ;; *********************************
 ;; *********************************
 ;; * Linuxパスワード暗号化
 ;; ────────────────
  ENCRYPT = 'LinuxPW.dat'    ;ファイル名
  IDENT_User = '<ユーザ名>'   ;ユーザ名
  PASS_WORD = '<パスワード>'   ;パスワード
  setpassword ENCRYPT IDENT_User PASS_WORD ;暗号化ファイル出力
 ;; *********************************
 
 
【起動方法】
 「Serverログイン用.bat」をダブルクリックして、メニューを選択する
 
【参考】

【TTL】TTL_LOGIN

;; FILENAME【TTL_LOGIN.ttl】
;; ************************************
;; ■ タイムアウト値の設定
;; ************************************
timeout=10                           ;; ■ タイムアウト値の設定
statusbox 'ログイン用のマクロ実行' '【★】'
;; ************************************
;; ■ 引数パラメータの値を格納する
;; ************************************
paramIP = params[2]                  ;; ■ 接続先IPアドレス
paramUSER = params[3]                ;; ■ ユーザー名
paramPASSWORD = params[4]            ;; ■ パスワードのdatファイル
paramINI = params[5]                 ;; ■ INIファイル
paramAUTH = params[6]                ;; ■ 認証方式(password/challenge)
paramVALUE = params[7]               ;; ■ 判別する為の値(root.dat)⇒ルート切替のパスワード設定
paramHOST = params[8]                ;; ■ ホスト名
DECRYPT = ''                         ;; ■ 複合化パスワード変数の初期化
;; ************************************
;; ■ 復号化したパスワード文字列の取得
;; ************************************
getpassword ParamPASSWORD ParamUSER DECRYPT ;; ■ 複合化パスワード取得
;;▼▲▼▲▼▲▼▲▼▲▼▲▼▲
;;■ 値の判定(CSVファイルのE列の文字)
;;■ RDP 又は TeraTerm での接続処理が分岐する
;;▼▲▼▲▼▲▼▲▼▲▼▲▼▲
strscan paramVALUE 'RDP'             ;; ■ 文字列の値に「RDP」を含むか判定する
if result <> 0 then                  ;; ■ リザルト値 0 以外の場 ⇒ RDP接続
;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
;;╋ RDP接続の処理
;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
 ;; ************************************
 ;; ■ 資格情報の作成
 ;; ************************************
  sprintf2 KEYINFO "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" ParamIP ParamUSER DECRYPT
  exec KEYINFO
 ;; ************************************
 ;; ■ 環境変数にMSTSC格納
 ;; ************************************
  RDPPATH = "%windir%\system32\mstsc.exe"
  expandenv RDPPATH
 ;; ************************************
 ;; ■ リモートデスクトップ接続コマンド実行
 ;; ************************************
  sprintf2 EXEPATH "%s /v:%s" RDPPATH ParamIP
  exec EXEPATH
 ;; ************************************
 ;; ■ 待機時間
 ;; ************************************
  statusbox DECRYPT '【パスワード】'
  pause 15
 ;; ************************************
 ;; ■ 資格情報の削除
 ;; ************************************
  sprintf2 KEYINFO "cmdkey /delete:TERMSRV/%s" ParamIP
  exec KEYINFO
  end                                ;; ■ TeraTermマクロ終了
endif
;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
;;╋ TeraTerm接続の処理
;;╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
;; ************************************
;; ■ SSH接続コマンド組み立て
;; ************************************
LoginSSH = paramIP                   ;; ■ IPアドレス or ホスト名
strconcat LoginSSH ':22 /ssh /auth=' ;; ■ 認証方式オプション
strconcat LoginSSH paramAUTH         ;; ■ 認証方式の値
strconcat LoginSSH ' /user='         ;; ■ ユーザ名オプション
strconcat LoginSSH paramUSER         ;; ■ ユーザ名の値
strconcat LoginSSH ' /passwd='       ;; ■ パスワードオプション
strconcat LoginSSH DECRYPT           ;; ■ パスワードの値
strconcat LoginSSH ' /F='            ;; ■ INIファイルオプション
strconcat LoginSSH paramINI          ;; ■ INIファイルの値
;; ************************************
;; ■ SSH接続ログイン
;; ************************************
connect LoginSSH
;; ************************************
;; ■ ログイン判定
;; ************************************
if result <> 2 then
    messagebox '接続エラー' '【connection err】'
    end                              ;; ■ TeraTermマクロ終了
endif
;; ************************************
;; ■ LOGフォルダの作成及びパス設定
;; ************************************
getdir macroDIR                      ;; ■ 現在のパス取得
strconcat macroDIR '\LOG\'           ;; ■ 編集 ⇒ <現在のパス>\LOG\
foldersearch '\LOG\'                 ;; ■ .\LOGフォルダの検索
if result = 0 then                   ;; ■ 検索結果=「無」の場合
 foldercreate macroDIR            ;; ■ .\LOGフォルダ作成
endif                                ;; ■ 判定処理の終了
FilePath = macroDIR                  ;; ■ ローカルフォルダのパス格納
;; ************************************
;; ■ ネットワークドライブの検索及びパス設定
;; ************************************
foldersearch 'Z:\'                   ;; ■ ネットワークドライブの検索
if result = 1 then                   ;; ■ 検索結果=「有」の場合
  FilePath = 'Z:\LOG\'               ;; ■ ネットワークドライブのパス格納
else                                 ;; ■ 検索結果=「無」の場合
endif                                ;; ■ 判定処理の終了
;; ************************************
;; ■ LOGファイル名の編集
;; ************************************
getdate LogDate "_%Y%m%d-%H%M%S.log" ;; ■ 現在時刻を取得 ⇒「_年月日-時分秒.log」
;; FileName_IPaddress = "_&h"           ;; ■ IPアドレスを取得 ⇒ 「_IP_」
;; strconcat FileName_IPaddress LogDate ;; ■ 編集 ⇒ 「_IP_年月日-時分秒.log」
FileName = "TeraTeram_"              ;; ■ ファイル名
strconcat FileName paramHOST         ;; ■ ホスト名
strconcat FileName LogDate           ;; ■ 編集 ⇒「ファイル名_ホスト名_年月日-時分秒.log」
;; ************************************
;; ■ LOGファイルの出力先の編集
;; ************************************
strconcat FilePath FileName
;; ************************************
;; ■ LOGファイル書込み(追記)開始
;; ************************************
logopen FilePath 0 1                 ;; ■ ログ書込み開始(TeraTerm設定が無い場合に実行される)
;; ************************************
;; ■ プロンプト待ち( $ or # )
;; ************************************
wait '$' '#'
sendln
sendln '#---------------------'
sendln '# ■ ' paramIP
sendln '#---------------------'
wait '$' '#'
sendln
;; ************************************
;; ■ ユーザをルートに切り替える
;; ************************************
strcompare paramUSER 'root'          ;; ■ 文字列の値が「root」と一致するか判定
if result <> 0 then                  ;; ■ リザルト値 0 以外の場合 ⇒ ルート以外と判定する
    statusbox 'rootユーザに切替えます。。。' '【ユーザ変更メッセージ】'
    ;; ************************************
    ;; ■ 復号化したパスワード文字列の取得
    ;; ************************************
    paramUSER = 'root'                       ;; ■ 変数に'root'を設定
    getpassword paramVALUE ParamUSER DECRYPT ;; ■ 複合化パスワード取得
    statusbox DECRYPT '【ルートのパスワード】'
    wait '$' '#'
    pause 2
    sendln 'su -'
    pause 2
    wait ':'
    sendln DECRYPT
    sendln
endif
;; ************************************
;; ■ リナックスの場合は以下を実行する
;; ************************************
strcompare paramVALUE 'Solaris'      ;; ■     wait '$' '#'の値が「Solaris」と一致するか判定
if result <> 0 then                  ;; ■ リザルト値 0 以外の場合 ⇒ リナックスと判定する
;;    pause 2
    wait '$' '#'
    sendln '#====================='
    sendln 'ip a | grep 'paramIP
    wait '$' '#'
    sendln '#---------------------'
    sendln '# 日時/USER名/ホスト名'
    sendln '#---------------------'
    sendln 'date "+%F %T" ; whoami ; hostname'
    wait '$' '#'
    sendln '#====================='
    sendln
    sendln
else
    end                              ;; ■ TeraTermマクロ終了
endif
statusbox 'サーバへログインしました。。。' '【ログインメッセージ】'
pause 1
end                                  ;; ■ TeraTermマクロ終了

【BAT】TTLログインScript

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
:MENU_Zero
cls
color 17
REM ## 文字コード設定
chcp 932
REM ## chcp 65001
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set Get_HOST=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\TTL_LOGIN.ttl
set TTL_File=%CURRENT_DIR%\TTL_LOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## LSTファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.lst
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.lst
REM ## TeraTermマクロのEXEファイル格納
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
REM ╋↓ 環境に合わせてパスを設定 ↓╋
REM ## cd /d "C:\Program Files (x86)\teraterm"
cd /d "C:\Program Files (x86)\teraterm"
REM ╋↑ 環境に合わせてパスを設定 ↑╋
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% ⇒ ■ カレントディレクトリ
echo RDP File : %RDP_File% ⇒ ■ RDP用Script
echo TTL File : %TTL_File% ⇒ ■ SSH用Script
echo INI File : %INI_File% ⇒ ■ 設定iniファイル
echo LST File : %TargetFILE_01% ⇒ ■ Windowsサーバ情報
echo LST File : %TargetFILE_02% ⇒ ■ Linuxサーバ情報
echo TeraTerm : %Change_DIR% ⇒ ■ TeraTerm格納先フォルダ
echo EXE File : %Macro_EXE% ⇒ ■ マクロ実行ファイル
echo -----------------------------
REM ## Timeout 2
Timeout 1
REM ## pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
REM ## echo *  【0】: 読込ファイルの表示
echo *  【1】: リモートデスクトップ 接続
echo *  【2】: Tera Term 接続
echo *
echo * 【99】: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==0 (goto MENU_Zero)
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
REM ───────────────
REM ## パラメータの設定
set READ_DATA=
set READ_DATA=%TargetFILE_01%
set FUNCTION_NAME=
set FUNCTION_NAME=:RDP
REM ## パラメータを共通処理に引き渡す
goto MENU_COMMON
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
REM ───────────────
REM ## パラメータの設定
set READ_DATA=
set READ_DATA=%TargetFILE_02%
set FUNCTION_NAME=
set FUNCTION_NAME=:TERATERM
REM ## パラメータを共通処理に引き渡す
goto MENU_COMMON
REM ★★★★★★★★★★★★★★★
REM ## 空ENTERキー無効(メニュー再表示)
:MENU_COMMON_R
cls
color 17
echo *****************************
echo 空ENTERキー無効(メニュー再表示)
echo *****************************
Timeout 1
REM ★★★★★★★★★★★★★★★
REM ## 共通処理
:MENU_COMMON
cls
REM ## 接続メニュー判定
if %FUNCTION_NAME%==:RDP (
  color f0
  echo *****************************
  echo 【リモートデスクトップ接続先】
  echo *****************************
  echo * RDP MENU
  echo *
)
if %FUNCTION_NAME%==:TERATERM (
  color 0e
  echo *****************************
  echo 【TeraTerm接続先】
  echo *****************************
  echo * TERATERM MENU
  echo *
)
REM ## LSTファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%READ_DATA%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_COMMON_R
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## LSTファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%READ_DATA%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set Get_HOST=%%b
    set Get_VALUE=%%d
    set GET_AUTH=%%f
    set GET_User=%%h
    set GET_Password=%%i
    REM ## ループ終了
    goto SkipFOR
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%READ_DATA%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set Get_HOST=%%b
  set Get_VALUE=%%d
  set GET_AUTH=%%f
  set GET_User=%%h
  set GET_Password=%%i
  REM ## ループ終了
  goto SkipFOR
)
REM ───────────────
REM ## 関数呼び出し
:SkipFOR
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ -- ログイン方法 -- %FUNCTION_NAME% 接続 %Get_HOST%
echo ┃────────────────────────────────────
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%GET_User% 】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call %FUNCTION_NAME% %Get_IP% %GET_User% %GET_Password% %GET_AUTH% %Get_VALUE% %Get_HOST%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
set xLOGINxAUTH=%4
set xLOGINxVALUE=%5
set xLOGIN_HOST=%6
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】【ホスト名:%xLOGIN_HOST%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
echo -----------------------------
pause
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE% %xLOGIN_HOST%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set xLOGINxAUTH=
set xLOGINxVALUE=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
set xLOGINxAUTH=%4
set xLOGINxVALUE=%5
set xLOGIN_HOST=%6
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】【ホスト名:%xLOGIN_HOST%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
echo -----------------------------
pause
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE% %xLOGIN_HOST%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set xLOGINxAUTH=
set xLOGINxVALUE=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 2
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 2
exit

【TTL】PuTTY接続の例

timeout=10
paramIP = params[2] ;; ■接続先IPアドレス
paramUSER = params[3] ;; ■ユーザー名
paramPASSWORD = params[4] ;; ■パスワードのdatファイル
paramINI = params[5] ;; ■INIファイル
paramAUTH = params[6] ;; ■認証方式(password/challenge)
paramVALUE = params[7] ;; ■判別する為の値
DECRYPT = '' ;; ■複合化パスワード変数の初期化
;; ***************************
;; ■ 復号化した文字列の取得
;; ***************************
getpassword ParamPASSWORD ParamUSER DECRYPT ;; ## 複合化パスワード取得
;; ***************************
;; ■ 値の判定(PuTTY)
;; ■ puttyjp.exe -ssh -2 -pw <パスワード> <ユーザ名>@<接続先IPアドレス>
;; ***************************
strscan paramVALUE 'PuTTY' ;; ■ 文字列に「PuTTY」が含まれているか判定
if result <> 0 then ;; ■ リザルト値 0 以外の場合は、PuTTY接続する
;; ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
;; ╋↓ 環境に合わせてパスを設定 ↓╋
puttyPATH = "C:\Program Files (x86)\PuTTY-ranvis\putty.exe" ;; ■ puttyのパスを格納
;; ╋↑ 環境に合わせてパスを設定 ↑╋
;; ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
expandenv puttyPATH ;; ■ 環境変数にputtyのパスを設定
LoginPuTTY = '-ssh -2 -pw ' ;; ■ PuTTY組み立て1
strconcat LoginPuTTY DECRYPT ;; ■ PuTTY組み立て(パスワード)
strconcat LoginPuTTY ' ' ;; ■ PuTTY組み立て2
strconcat LoginPuTTY paramUSER ;; ■ PuTTY組み立て(ユーザ名)
strconcat LoginPuTTY '@' ;; ■ PuTTY組み立て3
strconcat LoginPuTTY ParamIP ;; ■ PuTTY組み立て(IPアドレス)
sprintf2 EXEPATH '%s %s' puttyPATH LoginPuTTY ;; ■ コマンド組み立て
exec EXEPATH ;; ■ putty接続コマンド実行
end ;; ■ TeraTermマクロ終了
endif
;; ***************************
;; ■ SSH接続コマンド組み立て
;; ***************************
LoginSSH = paramIP ;; ## IPアドレス or ホスト名
strconcat LoginSSH ':22 /ssh /auth=' ;; ## 認証方式オプション
strconcat LoginSSH paramAUTH ;; ## 認証方式の値
strconcat LoginSSH ' /user=' ;; ## ユーザ名オプション
strconcat LoginSSH paramUSER ;; ## ユーザ名の値
strconcat LoginSSH ' /passwd=' ;; ## パスワードオプション
strconcat LoginSSH DECRYPT ;; ## パスワードの値
strconcat LoginSSH ' /F=' ;; ## INIファイルオプション
strconcat LoginSSH paramINI ;; ## INIファイルの値
;; ***************************
;; ■ SSH接続ログイン
;; ***************************
connect LoginSSH
;; ***************************
;; ■ ログイン判定
;; ***************************
if result <> 2 then
    messagebox '接続エラー' '【connection err】'
    end
endif
wait '$' '#'
sendln 'uname -n'
sendln 'echo ##################### 'paramIP' ##################### '
;; ***************************
;; ■ 値の判定
;; ***************************
strcompare paramVALUE 'Solaris' ;; ## Solaris判定
if result <> 0 then ;; ## Solaris以外なら以下のコマンド実行
sendln 'ip a | grep 'paramIP
sendln 'whoami'
endif
sendln 'date'
statusbox '1秒後にマクロ終了します' '【マクロ終了】'
pause 1
;; messagebox 'マクロを終了します' '【マクロ終了】'
end

更新日付

05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

RECOMMEND

プロフィール

HN:
Account
HP:
性別:
非公開
職業:
--- NODATA ---
趣味:
--- NODATA ---
自己紹介:
◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

リンク

 | HOME |  次のページ>>
Copyright ©  -- LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例 --  All Rights Reserved
Design by CriCri / Photo by Melonenmann / powered by NINJA TOOLS / 忍者ブログ / [PR]