PuTTYを起動し、テキストファイルにリストされているコマンドを実行するバッチファイルがあります。リモートサーバーで実行するコマンドを含むテキストファイルにパラメーターを渡せるようにしたい。
これは私が現在持っているものです-
start C:\Users\PuTTY.exe -load "server" -l userID -pw Password -m commands.txt
たとえば、バージョン番号を引数としてcommands.txt
ファイルに渡す方法はありますか?
commands.txt
をその場で生成する必要があります。
set PARAMETER=parameter
echo ./myscript.sh %PARAMETER% > commands.txt
start C:\Users\PuTTY.exe -load "server" -l userID -pw Password -m commands.txt
補足:タスクを自動化するには、plink.exe
の代わりに PuTTY.exe
の使用を検討する必要があります。
set PARAMETER=parameter
echo ./myscript.sh %PARAMETER% > commands.txt
plink.exe -load "server" -l userID -pw Password -m commands.txt
Plinkは、コマンドラインでコマンドを受け入れることもできます。これにより、タスクがさらに簡単になります。
plink.exe -load "server" -l userID -pw Password ./myscript.sh parameter
私はこれに頭を悩ませていましたが、次の簡単な方法でこれを簡単に達成できることに気づきました。
PuTTYを使用して実行したいテキストファイルがあり、実行時の引数も必要です。この場合、静的テキストファイルではなく、windowsbashを使用してその場でファイルを生成しました。以下のユースケースでは、選択したホストで「Execute.txt」が実行されます
例
@ECHO OFF
set prodhost[1]=Host1 <br/>
set prodhost[2]=Host2<br/>
ECHO Please select the box where you want to perform checkout.<br/>
ECHO 1. Host1 <br/>
ECHO 2. Host2<br/>
set /p Host="Enter Your Option: "
echo echo "Login and switch user was successful" <br/>
echo hostname <br/>
echo Sudo su - 'username' ^<^< EOF <br/>
echo <br/>
echo EOF <br/>
)>"Execute.txt" <br/>
"plink.exe" -l %username% -ssh !prodhost[%Host%]! -m Execute.txt
結論:bashを使用して実行するスクリプトをその場で生成し、ファイルに保存してから、Plinkを使用してプッシュします。