原shell脚本:
#!/bin/bash
remote_user="root"
remote_ip="10.138.60.76"
jar_file="vts-cbs-contract.jar"
local_path="vts-cbs-contract/target"
remote_path="/home/REQ501"
release_path="$remote_path"
backup_path="$remote_path/backup"
JAVA_PATH="/home/liuwentao/jdk-11.0.2/bin"
APP_PARAM="--spring.profiles.active=sit"
ssh $remote_user@$remote_ip "ps -ef | grep $jar_file | grep -v grep | cut -c 9-15"
if [ $? -eq 0 ]; then
ssh $remote_user@$remote_ip "mv $release_path/$jar_file $backup_path/$jar_file.`date +%Y-%m-%d-%k-%M`"
fi
if [ $? -eq 0 ]; then
scp $local_path/$jar_file $remote_user@$remote_ip:$release_path/
fi
if [ $? -eq 0 ]; then
ssh $remote_user@$remote_ip "cd $release_path ; $JAVA_PATH/java -jar $jar_file $APP_PARAM > $remote_path/out.log 2>&1 &"
fi
if [ $? = 0 ]; then
sleep 30
ssh $remote_user@$remote_ip "tail -n 50 $remote_path/out.log"
fi
对应的bat脚本:
set remote_user=root
set remote_ip=10.138.60.76
set jar_file=vts-cbs-contract.jar
set local_path=vts-cbs-contract/target
set remote_path=/home/REQ501
set release_path=%remote_path%
set backup_path=%remote_path%/backup"
set JAVA_PATH=/home/liuwentao/jdk-11.0.2/bin
set APP_PARAM=--spring.profiles.active=sit
ssh %remote_user%@%remote_ip% "ps -ef | grep %jar_file% | grep -v grep | cut -c 9-15"
If %errorlevel% == 0(ssh %remote_user%@%remote_ip% "mv %release_path%/%jar_file% %backup_path%/%jar_file%.`date +%Y-%m-%d-%k-%M`")
If %errorlevel% == 0(scp %local_path%/%jar_file% %remote_user%@%remote_ip%:%release_path%/)
If %errorlevel% == 0(ssh %remote_user%@%remote_ip% "cd %release_path% ; %JAVA_PATH%/java -jar %jar_file% %APP_PARAM% > %remote_path%/out.log 2>&1 &")
If %errorlevel% == 0(TIMEOUT /T 10
ssh %remote_user%@%remote_ip% "tail -n 50 %remote_path%/out.log"
注意:bat赋值=号前后是没有空格的