忍者ブログ

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

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

   

【Linux】コマンド備忘録①

▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【Linuxコマンド】★scp転送
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
 
【ファイルのGET/PUT】
---------------------------------------
# scp <ユーザ名>@<IPアドレス>:<コピー元のパス> <コピー先のパス>
# scp <コピー元のパス> <ユーザ名>@<IPアドレス>:<コピー先のパス>
---------------------------------------
 
【ディレクトリのGET/PUT】
---------------------------------------
# scp -rp <ユーザ名>@<IPアドレス>:<コピー元のパス> <コピー先のパス>
# scp -rp <コピー元のパス> <ユーザ名>@<IPアドレス>:<コピー先のパス>
 【オプションの意味】
    -p 属性を保持
    -r 再帰的
---------------------------------------
 
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【Linuxコマンド】★tar圧縮/展開
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
 
【圧縮,展開,内容表示(zip形式)】
---------------------------------------
# tar -czvf <アーカイブ名.tar.gz> <対象ディレクトリ>
# tar -xzvf <アーカイブ名.tar.gz>
# tar -tzvf <アーカイブ名.tar.gz>
# tar -czvf <アーカイブ名.tar.gz> -C <ディレクトリパス> <対象ディレクトリ>
# tar -xzvf <アーカイブ名.tar.gz> -C /<任意のディレクトリ>
 【オプションの意味】
    -c 圧縮
    -z ZIP形式
    -v 詳細
    -f ファイルの出力先
    -x 展開
    -t 内容表示
    -C チェンジディレクトリ(相対パス)
      (tarは相対パスを使う方が安全)
---------------------------------------
 
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【Linuxコマンド】★日付取得
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
 
【年月日時分秒】
---------------------------------------
# `date +%Y%m%d%H%M%S`
# $(date +%Y%m%d%H%M%S)
---------------------------------------
PR

【Windows】使用頻度高い操作メモ

▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【DOSコマンド】★ネットワーク系★
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
【IPアドレス表示・解放・更新】
---------------------------------------
C:\> ipconfig /all
C:\> ipconfig /release
C:\> ipconfig /renew
---------------------------------------
【MACアドレスを調べる】
---------------------------------------
C:\> getmac /v
C:\> arp -a
---------------------------------------
【ルーティングテーブル表示】
---------------------------------------
C:\> netstat -r
C:\> route print
---------------------------------------
【デフォルトゲートウェイ設定】
---------------------------------------
C:\> route add -f 0.0.0.0 mask 0.0.0.0 <GWアドレス>
---------------------------------------
【個別ルート設定】
---------------------------------------
C:\> route add -p <IPアドレス> mask 255.255.255.0 <GWアドレス>
---------------------------------------
【疎通確認(ホスト名変換)】
---------------------------------------
C:\> ping -a <IPアドレス>
---------------------------------------
【疎通確認(回数指定)】
---------------------------------------
C:\> ping -n <回数> <IPアドレス>
---------------------------------------
【ネットワークの経路を調べる】
---------------------------------------
C:\> pathping <IPアドレス>
C:\> tracert <IPアドレス>
---------------------------------------
【ネットワークドライブ表示・追加・削除】
---------------------------------------
C:\> net use
C:\> net use Z: \\<IPアドレス>\<フォルダ>
C:\> net use Z: /DELETE
---------------------------------------
【割当ドライブの表示・追加・削除】
---------------------------------------
C:\> subst
C:\> subst W: C:\<フォルダ>
C:\> subst /d W:
---------------------------------------
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【DOSコマンド】★システム系★
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
【バージョン情報】
---------------------------------------
C:\> ver
---------------------------------------
【ログインユーザ名の表示】
---------------------------------------
C:\> whoami
---------------------------------------
【システム情報出力】
---------------------------------------
C:\> systeminfo /fo csv > c:\<ファイル名>.csv
---------------------------------------
【サービス状態の表示】
---------------------------------------
C:\> sc query type=all state=all
---------------------------------------
【サービスの開始・終了】
---------------------------------------
C:\> sc start <サービス名>
C:\> sc stop <サービス名>
C:\> net start "<サービス名>"
C:\> net stop "<サービス名>"
---------------------------------------
【実行タスクの一覧表示】
---------------------------------------
C:\> tasklist
---------------------------------------
【スケジュールタスクの内容表示】
---------------------------------------
C:\> schtasks
C:\> schtasks /Query /V /TN <タスク名>
---------------------------------------
【環境変数<文字列>表示】
---------------------------------------
C:\> set <文字列>
---------------------------------------
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【DOSコマンド】★GUI画面系★
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
【レジストリエディタ起動】
---------------------------------------
C:\> regedit.exe
---------------------------------------
【Edgeを開いて<URL>を表示する】
---------------------------------------
C:\> start msedge http://<URL>
---------------------------------------
【Microsoft管理コンソールを起動する】
---------------------------------------
C:\> eventvwr.msc
C:\> services.msc
C:\> taskschd.msc
C:\> perfmon.msc
C:\> compmgmt.msc
C:\> devmgmt.msc
C:\> diskmgmt.msc
C:\> tsmmc.msc
C:\> gpedit.msc
C:\> lusrmgr.msc
C:\> secpol.msc
C:\> admgmt.msc
C:\> wmimgmt.msc
---------------------------------------
【コントロールパネル項目を開く】
---------------------------------------
C:\> sysdm.cpl
C:\> ncpa.cpl
C:\> inetcpl.cpl
C:\> appwiz.cpl
C:\> powercfg.cpl
C:\> intl.cpl
C:\> timedate.cpl
C:\> desk.cpl
---------------------------------------
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
■【その他】★ショートカットキー★
▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
---------------------------------------
  [Win] + [D]
    デスクトップの表示
---------------------------------------
  [Win] + [L]
    画面ロック
---------------------------------------
  [Win] + [R]
    ファイル名を指定して実行
---------------------------------------
  [Win] + [E]
    エクスプローラー起動
---------------------------------------
  [Win] + [I]
    設定画面の表示
---------------------------------------
  [Win] + [Shift] + [S]
    矩形選択のスクリーンショット
---------------------------------------
  [Win] + [Tab]
    仮想デスクトップの管理
---------------------------------------
  [Win] + [Ctrl] + [→(←)]
    仮想デスクトップ切替操作
---------------------------------------
  [Alt] + [F4]
    アプリケーション終了
---------------------------------------
  [Alt] + [Ctrl] + [Del]
    強制終了
---------------------------------------

【使い方】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

【BAT】TTL呼び出しバッチ【改】

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\RDP_LOGON.ttl
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
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 ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% --- CURRENT Path
echo RDP File : %RDP_File% --- RDP File
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
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%==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
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## RDP用メニュー表示
  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_START_01
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 ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set RDP_User=%%h
    set RDP_Password=%%i
    REM ## ループ終了
    goto forSkip1
  )
) 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 (%TargetFILE_01%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set RDP_User=%%h
  set RDP_Password=%%i
  REM ## ループ終了
  goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%RDP_User% 】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## TeraTerm用メニュー表示
  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_START_02
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 ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set Get_VALUE=%%d
    set TERATERM_AUTH=%%f
    set TERATERM_User=%%h
    set TERATERM_Password=%%i
    REM ## ループ終了
    goto forSkip2
  )
) 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 (%TargetFILE_02%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set Get_VALUE=%%d
  set TERATERM_AUTH=%%f
  set TERATERM_User=%%h
  set TERATERM_Password=%%i
  REM ## ループ終了
  goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%TERATERM_User% 】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password% %TERATERM_AUTH% %Get_VALUE%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
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
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
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】RDP接続の例

━━━━━━━━━━━━━━━━━━━
① 「パスワード暗号化ファイル作成.ttl」を用意する
 ⇒記載内容は以下参照
        ;; *********************************
        ENCRYPT = 'PW.dat'                    ;; 対象ファイル名を指定
        IDENT_User = 'Administrator'       ;; ユーザ名などを指定
        PASS_WORD = '!P@ssw0rd'       ;; 対象のパスワードを指定
        setpassword ENCRYPT IDENT_User PASS_WORD        ;; 暗号化ファイル出力
        ;; *********************************
━━━━━━━━━━━━━━━━━━━
② 「RDP_LOGON.ttl」でパスワードを復号化してリモートデスクトップ接続する
 ⇒記載内容は以下参照
timeout=10
;; ***************************
;; 接続先IPアドレス、ユーザー名、パスワードの引数を格納する
;; ***************************
ParamIP = Params[2]
ParamUSER = Params[3]
ParamPASSWORD = Params[4]
DECRYPT = ''
;; ***************************
;; 復号化した文字列の取得
;; ***************************
getpassword ParamPASSWORD ParamUSER DECRYPT
;; ***************************
;; 資格情報の作成
;; ***************************
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 20
;; ***************************
;; 資格情報の削除
;; ***************************
sprintf2 KEYINFO "cmdkey /delete:TERMSRV/%s" ParamIP
exec KEYINFO
━━━━━━━━━━━━━━━━━━━
③ バッチから呼び出す ⇒ 以下は記述例として一部抜粋
====================================
 cd /d %Change_DIR%
 ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
====================================
 ※全体の記述例は以下参照
━━━━━━━━━━━━━━━━━━━

【BAT】TTL呼出しバッチ

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\RDP_LOGON.ttl
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
REM ## TeraTermマクロのEXEファイル格納
cd /d C:\Program Files (x86)\teraterm
REM ## cd /d D:\Program Files (x86)\teraterm
REM ## cd /d E:\Program Files (x86)\teraterm
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% --- CURRENT Path
echo RDP File : %RDP_File% --- RDP File
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
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%==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
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## RDP用メニュー表示
  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_START_01
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 ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set RDP_User=%%h
    set RDP_Password=%%i
    REM ## ループ終了
    goto forSkip1
  )
) 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 (%TargetFILE_01%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set RDP_User=%%h
  set RDP_Password=%%i
  REM ## ループ終了
  goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo --- %USR_INPUT_STR% --- %Get_IP% %RDP_User%
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## TeraTerm用メニュー表示
  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_START_02
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 ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set TERATERM_User=%%h
    set TERATERM_Password=%%i
    REM ## ループ終了
    goto forSkip2
  )
) 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 (%TargetFILE_02%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set TERATERM_User=%%h
  set TERATERM_Password=%%i
  REM ## ループ終了
  goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo --- %USR_INPUT_STR% --- %Get_IP% %TERATERM_User%
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
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

【BAT】暗号化と複合化

①で予め暗号化したファイルを作成しておく、③のバッチから②のPowerShellを呼び出して複合化する場合の例

①【暗号化パスワードのファイル作成コマンド】
PowerShell -command "[byte[]] $Enc_KEY = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43);$Cred = Get-Credential;$Cred.Password | ConvertFrom-SecureString -key $Enc_KEY | Set-Content .\Password.dat"

②## 【複合化パワーシェル(関数)】
## AES用バイト配列
[byte[]] $Enc_KEY = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
 
## 暗号化されたパスワードを複合化する
$Get_Param = Get-Content $Args[0] | ConvertTo-SecureString -key $Enc_KEY
$SSTstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Get_Param)
$PTSstr  = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($SSTstr)
$Return_Param = $PTSstr
 
## 戻り値を返す
return $Return_Param

③【バッチからパワーシェルを呼び出して結果を取得する】
@echo off
 
set PS_Args=Password.dat
 
REM ## echo パラメータ %PS_Args%
 
REM ## パスワードを取得する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
 
echo 複合化したパスワード = %PS_VALUE%
 
pause

更新日付

02 2026/03 04
S M T W T F S
1 3 4 5 6 7
8 9 10 11 12 13 14
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

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]