[SHELL]使用plink与pscp远程发布程序

putty工具

plink

pscp

自动发布文件

启动服务脚本

停止服务脚本

发布脚本

 

当我们需要通过脚本(Windows下)自动发布程序(服务)文件到Linux服务器上时,putty工具包中的plink与pscp则是我们所需的利器。

putty工具

putty是一个跨平台的远程登录工具,包括一组程序:

  • putty:Telnet和SSH客户端连接工具,方便远程连接Linux服务器;
  • pscp:scp客户端,命令行下通过SSH拷贝文件;
  • psftp:SFTP的命令行客户端,类似FTP的文件传输,但是使用的是SSH的22端口;
  • plink:命令行工具,可远程执行Linux服务器上的命令;

plink

plink便于执行自动化的命令和工作。可以在命令行制定好要执行的命令,然后执行,完成后自动关闭session。plink [options] [user@]host [command]

  • -batch:关闭所有交互提示,脚本执行时非常有用;
  • -m file:执行命令较多时,把命令保存在文件中,指定文件;
  • -P:(大写)指定连接的端口;
  • -pw:指定用户密码;

plink -batch root@192.168.1.2 -pw abcd1234 date

pscp

pscp可实现命令行下文件的上传与下载。
pscp [options] [user@]host:source target 下载
pscp [options] source [source...] [user@]host:target 上传
pscp [options] -ls user@host:filespec 显示文件列表

  • -batch:关闭所有交互提示,脚本执行时非常有用;
  • -p:(小写)拷贝文件时,保留源文件建立的时间;
  • -P:(大写)指定连接的端口;
  • -pw:指定用户密码;
  • -r:拷贝整个目录;
  • -v:拷贝文件时,显示提示信息;

pscp -pw abcd1234 test.txt root@192.168.1.2:/data/mydir/

自动发布文件

为能自动发布文件到Linux服务器(以MyTest.WebService服务为例),需要:

  • 在服务器上查找对应的服务,并停止;
  • 上传文件到服务器上;
  • 启动服务;
    启动与停止服务的脚本放在Linux服务,由发布脚本调用。

启动服务脚本

对于jar包服务,只需通过java命令启动即可;启动后(等待1s,sleep 1),查看对应服务是否存在,若存在则启动成功。

#!/bin/bash

DIR=$1
if [ -z $DIR ]; then
  DIR=p80
  echo "Use default Dir: $DIR"
fi

FILE=$2
if [ -z $FILE ]; then
  FILE=MyTest.WebService-1.0-SNAPSHOT.jar
  echo "Use default File: $FILE"
fi

FULL=$(cd `dirname $0`; cd $DIR; pwd)
cd $FULL
FULL=$FULL/$FILE
echo "To run: $FULL"
nohup java -jar $FULL >> RTCWeb-run.log 2>&1 &

sleep 1
PID=$(ps -ef | grep $FULL | grep -v grep | grep -v stopWebService | awk '{print $2}')
if [[ $PID -ne 0 ]]; then
  echo "SUCCESS run as: $PID"
else
  echo "!!! ERROR: run $FILE fail"
  exit
fi

停止服务脚本

通过ps与grep查找到对应的服务信息,然后通过awk提前对应的进程ID;若获取成功,则通过Kill命令停止服务。

#!/bin/bash

DIR=$1
if [ -z $DIR ]; then
  DIR=p80
  echo "Use default Dir: $DIR"
fi

FILE=$2
if [ -z $FILE ]; then
  FILE=MyTest.WebService-1.0-SNAPSHOT.jar
  echo "Use default File: $FILE"
fi

FULL=$DIR/$FILE
echo "To find: $FULL"
PID=$(ps -ef | grep $FULL | grep -v grep | grep -v stopWebService | awk '{print $2}')
if [[ $PID -ne 0 ]]; then
  echo "ProcessId: $PID"
else
  echo "Process not found"
  exit
fi

echo "Kill now"
kill -9 $PID

发布脚本

先停止服务,后通过pscp把文件上传到对应位置后,再启动服务。

@echo OFF

set IP=%~1
set FILE=%~2
set DIR=%~3
if "%IP%"=="" (set IP=192.168.1.129)
if not defined FILE (set FILE=MyTest.WebService-1.0-SNAPSHOT.jar)
if not defined DIR (set DIR=p80)
set FULL=%DIR%/%FILE%
echo Server: %IP%
echo File: %FULL%

echo= 
echo To kill %FULL% first
plink.exe -batch root@%IP% -pw abcd1234 "sh /data/webService/stopWebService.sh %DIR% %FILE%"
if errorlevel 1 (
    echo kill fail: %errorlevel%
    goto ERROR
)

@REM wait a second
@ping -n 2 127.0.0.1 > nul

echo= 
echo Upload %FILE% to %DIR%
pscp.exe -pw abcd1234 %FILE% root@%IP%:/data/webService/%DIR%/
if errorlevel 1 (
    echo upload fail: %errorlevel%
    goto ERROR
)
@ping -n 2 127.0.0.1 > nul

echo= 
echo To start %FULL%
plink.exe -batch -ssh root@%IP% -pw abcd1234 "sh /data/webService/startWebService.sh %DIR% %FILE%"
if errorlevel 1 (
    echo start fail: %errorlevel%
    goto ERROR
)

echo= 
echo SUCESS!
goto FINISH

:ERROR
echo !!!ERROR!!!

:FINISH

若要发布文件,只需call publishJar.bat %IP% %FILE% %DIR%即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值