ローカルマシンとSSHトンネルを介して到達できるマシンの間でデータを同期するバッチスクリプトがあります。トンネルを常に開いたままにするのではなく、バッチスクリプトの開始時に開始し、同期が完了したときに終了するようにします。
バッチスクリプトからplinkを開始および停止し、plinkが作成するトンネルを利用するWindowsコマンドを途中で実行するにはどうすればよいですか?
start
コマンドとtaskkill
コマンドを組み合わせて、plinkをバッチスクリプトに統合することができました。
@echo off
set local_port=1580
set remote_ip=10.19.0.241
set remote_port=1580
set wait_for_tunnel_seconds=4
set [email protected]
min.exe
echo --- Closing any active tunnels
taskkill /f /fi "imagename eq plink.exe"
echo --- Opening tunnel from local port %local_port% to remote %remote_ip%:%remote_port%
start /min plink -T -L %local_port%:%remote_ip%:%remote_port% %ssh_Host%
ping -n %wait_for_tunnel_seconds% 127.0.0.1 >nul
tcping -n 1 localhost %local_port%
IF %ERRORLEVEL% neq 0 (
echo --- Failed to open tunnel. Canceling.
taskkill /f /fi "imagename eq plink.exe"
rem Use the port number as the exit code (makes it obvious in scheduled task last run result)
EXIT /b %local_port%
)
echo --- Starting synchronization
set error_=0
sync_command.exe
set error_=%ERRORLEVEL%
if %error_% neq 0 (
echo --- Sync completed, but with errors. Exit result: %error_%
) else (
echo --- Sync completed
)
echo --- Closing tunnel
taskkill /f /fi "imagename eq plink.exe"
exit /b %error_%
使用されるその他のツール: