【原】远程连接树莓派设备,以及进行远程应用更新与升级(新)

简介:

但是在生产环境测的时候,却发现不同环境还稍微有点小的问题。

因为之前旧的不同版本略有小的差异导致;之后经过优化,重新测试OK。

优化点主要是这两点,另外有点其他的小调整:

1.使用ln软连接方式,而不是mv版本号;

2.修改stop服务步骤,kill进程有效性;

在这里,重新补充一下最新的Scripts,如下:

boxagent@iZ2zeed4f6hbydt2078ddcZ:~$ cat boxrelease/script/upgrade_osprey.sh 

复制代码
#!/bin/sh

#config
APP_NAME=osprey
USER_HOME=/home/lifeccp/webapp
RELEASE_SRC="boxagent@smith.lifeccp.com:/home/boxagent/boxrelease/osprey/*.zip"


#function
say() {
    echo -e "[Osprey Deploy] $0: $1"
}

fetch_artifacts() {
    DEST="$USER_HOME/incoming/${APP_NAME}/"
    [ -d ${DEST} ] || mkdir -p ${DEST}
    say "Fetching artifacts from $ARTIFACTS_SRC to ${DEST}"
    scp ${RELEASE_SRC} ${DEST} 
    say "Unzip the new war"
    cd ${DEST} && unzip -qo *.zip    
    
    say "Change startup started"
    sed -i 8d ${USER_HOME}/${APP_NAME}/startup 
    sed -i '8i MAIN_JAR=osprey.release.jar'  ${USER_HOME}/${APP_NAME}/startup   
    say "Change startup finished"
    
    if [ "$?" = "0" ]; then
        say "\033[32m -=Fetch artifacts finished=- \033[0m"
    else
        say "\033[31m -=Fetch artifacts failed=- \033[0m"
        exit 1
    fi

}

stop_app() {        
    say "Stopping [${APP_NAME}]"
    pkill -f ${APP_NAME}
    osprey_pid=$(pgrep -f ${APP_NAME})
    if [ "${osprey_pid}" = "" ]; then
        say "\033[32m -=Stop ${APP_NAME} finished=- \033[0m"
    else
        say "\033[32m -=Stop ${APP_NAME} failed=- \033[0m"
        kill -9 "${osprey_pid}"
        kill -9 `ps aux | grep osprey | awk '{print $2}'`
        say "\033[32m -=Kill -9 ${APP_NAME}=- \033[0m"
    fi
    say "Stopping [${APP_NAME}] finished"
}

backup_app() {
    DEST="$USER_HOME/archive/${APP_NAME}$(date '+%Y%m%d%H%M')/"
    say "make backup dir ${DEST}"
    mkdir -p "${DEST}"
    cp -r ${USER_HOME}/${APP_NAME}/* ${DEST}    
    say "\033[32m -=Backup ${APP_NAME} finished=- \033[0m"
}

deploy_app() {
    DEST="$USER_HOME/incoming/${APP_NAME}"
    say "Deploy ${APP_NAME}"

    say "Remove old app"
    rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar
    rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar.original

    say "Copying new app start"
    cp ${DEST}/osprey*.release.jar $USER_HOME/$APP_NAME/
    cp ${DEST}/osprey*.release.jar.original $USER_HOME/$APP_NAME/
    say "Copying new app finished"
    
    say "Make app link start"
    ln -s /home/lifeccp/webapp/osprey/osprey-*.release.jar /home/lifeccp/webapp/osprey/osprey.release.jar    
    say "Make app link finished"
    
    if [ "$?" = "0" ]; then
        say "\033[32m -=Deploy ${APP_NAME} finished=- \033[0m"
    else
        say "\033[31m -=Deploy ${APP_NAME} failed=- \033[0m"
        exit 1
    fi
}


clear() {
    say "clear $USER_HOME/incoming/${APP_NAME}/"
    rm -rf $USER_HOME/incoming/${APP_NAME}/*
}


start_app() {
    say "Start [${APP_NAME}]"
    sudo reboot
    if [ "$?" = "0" ]; then
        say "\033[32m -=Start reboot finished=- \033[0m"
    else
        say "\033[31m -=Start reboot failed=- \033[0m"
        exit 1
    fi
}

publish() {
    say "********Step1 start..."
    fetch_artifacts
    say "********Step1 finished...\n\n********Step2 start..."
    stop_app
    say "********Step2 finished...\n\n********Step3 start..."
    backup_app
    say "********Step3 finished...\n\n********Step4 start..."
    deploy_app  
    say "********Step4 finished...\n\n********Step5 start..."
    clear
    say "********Step5 finished...\n\n********Step6 start..."
    start_app
    say "********Step6 finished...Upgrade finished!"
}

#### do it ###
publish
复制代码

 

脚本使用方法:

1.使用ssh方式登录agent被控机;

2.执行如下命令;

scp boxagent@smith.lifeccp.com:/home/boxagent/boxrelease/script/upgrade_osprey.sh .

3.输入密码;

4.等待reboot;

 

升级完成之后,可以自己查看服务是否正常,一般情况下,没什么问题。

 


本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/6598140.html,如需转载请自行联系原作者

相关文章
|
8月前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
116 0
|
3月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
83 4
|
6月前
|
安全 数据安全/隐私保护 网络虚拟化
win10 无需下载软件,不用向日葵、不用todesck也能快速远程!而且密码会自动定时更新!25
【7月更文挑战第25天】在Windows 10中,快速助手是内置的远程协助工具,用于无第三方软件情况下的远程支持。用户需通过搜索打开应用,提供帮助者先登录微软账号获取安全代码,然后被帮助者输入该代码以建立连接。连接有10分钟有效期,需在时间内输入。连接建立后,提供帮助者需请求控制权,经被帮助者同意后才能操作对方电脑。整个过程增强了安全性,但流程与向日葵、Todesk等第三方工具不同。
107 7
|
网络安全
树莓派连接电脑,显示拒绝连接解决方案
树莓派连接电脑,显示拒绝连接解决方案
938 0
|
Windows
Windows 11 22H2 跳过系统初次启动时强制联网登录
Windows 11 22H2 跳过系统初次启动时强制联网登录
318 0
|
Linux Windows
远程批量管理主机的关机和重启实现工具 - WGCLOUD
WGCLOUD有个功能模块叫做下发指令,可以将关机或重启的指令下发给多个主机执行,使用起来非常简单
远程批量管理主机的关机和重启实现工具 - WGCLOUD
|
虚拟化
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
|
Linux
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
221 0
|
关系型数据库 MySQL Linux
用(玩客云)小设备做linux服务器
适合散户,搭博客,学命令等,公司企业还是要用专业设备
1072 1
|
弹性计算 运维 Ubuntu
效率神器!云助手----发送远程命令:通过发送远程命令窗口,无需登录到实例内部,即可直接执行命令。
发送远程命令可以帮助您在实例内部快速执行命令,即无需远程连接登录实例,即可完成查看硬盘空间、安装软件、启动停止服务等操作。该功能通过 云助手 的命令执行功能实现,如果您的实例还没有安装或激活云助手客户端,请先 安装或者激活 。
12632 0
效率神器!云助手----发送远程命令:通过发送远程命令窗口,无需登录到实例内部,即可直接执行命令。