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

简介:

在实际工作中,我们把树莓派作为一个agent放在用户那边,在里面启动一些服务,进行用户业务数据dicom文件的存储,并转发到阿里云oss上面,起到一个gateway的作用。

但是,放出去的盒子,就如同魔术师手中的飞镖,发出去,怎么还能继续掌控,这很重要。

在实际应用场景中,对于这种agent,我们还需要继续维护,升级,并定期进行一些业务数据的更新。

那么如何进行远程操控以及管理呢?

我们目前采用下面的方式处理,虽然我认为其实有更好的方式,但目前暂先就如此,毕竟我们都知道,稳定大于一切。

1.在每个agent 树莓派盒子上面,通过 sshkey-gen生成自己的公钥私钥;

2.将每个agent的私钥存储在ssh在管控/调度机器(相当于跳板机)的~/.ssh/authorized_keys中,并保存;

3.在自己的应用程序中,通过MQ下发消息,在树莓派盒子上面,用 ssh -o "StrictHostKeyChecking no" -CNfR 10000:127.0.0.1:22 boxagent@smith.lifeccp.com 驱动盒子发起ssh请求;或者

4.在跳板机上面,使用 ssh -p 10140 lifeccp@localhost 命令来连接树莓派盒子;

5.由于ssh连接存在时效性,所以,退出时候记得exit一下,否则可能下次连接时候存在问题导致连接不上。

6.如果连接不上,可以通过如下命令kill旧的进程,然后重新发起连接请求; 

kill -9 `ps -ef |grep ssh |grep StrictHostKeyChecking | awk '{print $2}'`

或者 kill -9 `pgrep -f StrictHostKeyChecking`

 

我这边成功的结果,如下图:

 

 另外,应用更新其实很简单了,在agent盒子那边写个脚本,执行一下就行了。update.sh脚本内容见下面:

复制代码
#!/bin/sh
export JAVA_HOME=/usr/lib/jdk1.8.0_45
export CALSSPATH=$JAVA_HOME/lib/*.*   
export PATH=$PATH:$JAVA_HOME/bin

#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    
    
    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}"
        say "\033[32m -=Kill -9 ${APP_NAME}=- \033[0m"
    fi
}

backup_app() {
    DEST="$USER_HOME/archive/${APP_NAME}$(date '+%Y%m%d%H%M')/"
    say "make backup dir ${DEST}"
    mkdir -p "${DEST}"
    
    say "Copying backup app and config files."
    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"
    # cp $USER_HOME/incoming/$APP_NAME/*.zip $USER_HOME/$APP_NAME/
    cp ${DEST}/osprey*.release.jar $USER_HOME/$APP_NAME/osprey.release.jar
    cp ${DEST}/osprey*.release.jar.original $USER_HOME/$APP_NAME/
    

    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_app() {
    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() {
    fetch_artifacts
    stop_app
    backup_app
    deploy_app  
    clear_app
    start_app
}

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

 

简单说明一下上面的脚本:

1.获取新的安装包;

2.停止当前应用;

3.备份当前应用;

4.部署当前应用;

5.清理安装包文件;

6.启动服务应用;

7.发布部署; 

 


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

相关文章
|
3月前
|
安全 UED Windows
电脑怎么更新系统
电脑系统的更新不仅可以带来新的功能和改进,还能提升系统的安全性和稳定性。许多用户对于如何更新系统可能不太了解,本文将详细介绍电脑系统更新的方法和步骤,帮助大家轻松完成系统更新。
电脑怎么更新系统
|
4月前
|
安全 数据安全/隐私保护 网络虚拟化
win10 无需下载软件,不用向日葵、不用todesck也能快速远程!而且密码会自动定时更新!25
【7月更文挑战第25天】在Windows 10中,快速助手是内置的远程协助工具,用于无第三方软件情况下的远程支持。用户需通过搜索打开应用,提供帮助者先登录微软账号获取安全代码,然后被帮助者输入该代码以建立连接。连接有10分钟有效期,需在时间内输入。连接建立后,提供帮助者需请求控制权,经被帮助者同意后才能操作对方电脑。整个过程增强了安全性,但流程与向日葵、Todesk等第三方工具不同。
83 7
|
4月前
|
存储 监控 数据管理
如何设置绿联云与PC电脑同步?
【7月更文挑战第1天】如何设置绿联云与PC电脑同步?
801 2
|
网络安全
树莓派连接电脑,显示拒绝连接解决方案
树莓派连接电脑,显示拒绝连接解决方案
883 0
|
虚拟化
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
解决:为什么VMware虚拟机配置连上网了,电脑重启后,联网需要重置?!看这里
|
开发工具 git Shell
树莓派 之 更换国内源
(仅适用于连接不上官方源的用户,某些系统软件只能通过官方源安装或更新) sudo nano /etc/apt/sources.list 测试最佳软件源: 安装 netselect sudo apt-get install netselect git clone git clone https://github.
5313 0
|
安全 区块链 云计算
|
网络协议
Win系统 - 远程计算机或设备将不接受连接(二)
Win系统 - 远程计算机或设备将不接受连接(二)
333 0
Win系统 - 远程计算机或设备将不接受连接(二)
|
小程序 网络安全 Python
阿里云&树莓派通信记录
本文详细介绍如何使用阿里云服务器与小程序之间完成通讯。
阿里云&树莓派通信记录
|
数据安全/隐私保护
Win10系统问题集锦:如何查看Win10系统下所连接的无线网络的wifi密码/win系统内部录制声音
Win10系统问题集锦:如何查看Win10系统下所连接的无线网络的wifi密码/win系统内部录制声音
Win10系统问题集锦:如何查看Win10系统下所连接的无线网络的wifi密码/win系统内部录制声音