8 changed files with 212 additions and 118 deletions
-
1env/startup.sh
-
45sh/deploy_rk3328.sh
-
20sh/envsetup_pc.sh
-
24sh/envsetup_rk3328.sh
-
211sh/iflytool.sh
-
0sh/packet_rk3328.sh
-
12sh/ssh-clear-id.sh
-
17sh/ssh-copy-id.sh
@ -1,2 +1,3 @@ |
|||||
#!/bin/bash |
#!/bin/bash |
||||
|
cd /app |
||||
./app.out & |
./app.out & |
@ -1,45 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
|
|
||||
PROJECT_NAME=app |
|
||||
ROOTFS_APP_DIR=/ |
|
||||
export PROJECT_PATH=$(pwd) |
|
||||
|
|
||||
set -e |
|
||||
set -x |
|
||||
|
|
||||
# 从命令行读取参数,目标IP,是否重启 $0 --ip <ip> --reboot |
|
||||
|
|
||||
while [ "$1" != "" ]; do |
|
||||
case $1 in |
|
||||
--ip) |
|
||||
shift |
|
||||
ip=$1 |
|
||||
;; |
|
||||
--reboot) |
|
||||
shift |
|
||||
reboot=$1 |
|
||||
;; |
|
||||
esac |
|
||||
shift |
|
||||
done |
|
||||
|
|
||||
# 如果IP为空,提示使用方法 |
|
||||
|
|
||||
if [ -z "$ip" ]; then |
|
||||
echo "Usage: $0 --ip <ip> --reboot <true|false>" |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
scp -r out/${PROJECT_NAME}.tar.gz root@${ip}:${ROOTFS_APP_DIR} |
|
||||
|
|
||||
#如果存在shutdown.sh,则先执行shutdown.sh |
|
||||
ssh root@${ip} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi' |
|
||||
|
|
||||
ssh root@${ip} "cd ${ROOTFS_APP_DIR} && tar -xvf ${PROJECT_NAME}.tar.gz -C ${ROOTFS_APP_DIR}" |
|
||||
ssh root@${ip} "cd ${ROOTFS_APP_DIR} && rm -rf ${PROJECT_NAME}.tar.gz" |
|
||||
|
|
||||
if [ "$reboot" = "true" ]; then |
|
||||
echo "reboot"; |
|
||||
ssh root@${ip} "reboot" |
|
||||
fi |
|
||||
echo "deploy success" |
|
@ -1,20 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
export PROJECT_PATH=`pwd` |
|
||||
|
|
||||
#!/bin/bash |
|
||||
|
|
||||
set -e #如果某条指令执行出错,则会退出脚本 |
|
||||
# set -v #打印正在指令的指令 |
|
||||
set -x |
|
||||
|
|
||||
# 创建编译目录 |
|
||||
# echo "创建编译目录" |
|
||||
echo "mkdir -p ${PROJECT_PATH}/build" |
|
||||
mkdir -p ${PROJECT_PATH}/build |
|
||||
|
|
||||
#构造编译脚本 |
|
||||
echo "cmake ../ \\" > ${PROJECT_PATH}/build/build.sh |
|
||||
echo "-DCMAKE_C_COMPILER=gcc \\" >> ${PROJECT_PATH}/build/build.sh |
|
||||
echo "-DCMAKE_CXX_COMPILER=g++ \\" >> ${PROJECT_PATH}/build/build.sh |
|
||||
|
|
||||
chmod +x ${PROJECT_PATH}/build/build.sh |
|
@ -1,24 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
export PROJECT_PATH=`pwd` |
|
||||
|
|
||||
#!/bin/bash |
|
||||
|
|
||||
set -e #如果某条指令执行出错,则会退出脚本 |
|
||||
# set -v #打印正在指令的指令 |
|
||||
set -x |
|
||||
|
|
||||
# 创建编译目录 |
|
||||
# echo "创建编译目录" |
|
||||
echo "mkdir -p ${PROJECT_PATH}/build" |
|
||||
mkdir -p ${PROJECT_PATH}/build |
|
||||
|
|
||||
# 下载编译工具 |
|
||||
cd ${PROJECT_PATH}/build |
|
||||
wget -c "ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/gnu_gcc_release/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
|
||||
tar -xvf "gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
|
||||
|
|
||||
# 构造编译脚本 |
|
||||
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh |
|
||||
echo "-DCMAKE_C_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \\" >>${PROJECT_PATH}/build/build.sh |
|
||||
echo "-DCMAKE_CXX_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \\" >>${PROJECT_PATH}/build/build.sh |
|
||||
chmod +x ${PROJECT_PATH}/build/build.sh |
|
@ -0,0 +1,211 @@ |
|||||
|
#!/bin/bash |
||||
|
export PROJECT_PATH=$(pwd) |
||||
|
|
||||
|
function do_envsetup_pc() { |
||||
|
#构造编译脚本 |
||||
|
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh |
||||
|
echo "-DCMAKE_C_COMPILER=gcc \\" >>${PROJECT_PATH}/build/build.sh |
||||
|
echo "-DCMAKE_CXX_COMPILER=g++ \\" >>${PROJECT_PATH}/build/build.sh |
||||
|
chmod +x ${PROJECT_PATH}/build/build.sh |
||||
|
} |
||||
|
|
||||
|
function do_envsetup_rk3328() { |
||||
|
# 下载交叉编译工具 |
||||
|
cd ${PROJECT_PATH}/build |
||||
|
wget -c "ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/gnu_gcc_release/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
||||
|
tar -xvf "gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz" |
||||
|
|
||||
|
# 构造编译脚本 |
||||
|
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh |
||||
|
echo "-DCMAKE_C_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \\" >>${PROJECT_PATH}/build/build.sh |
||||
|
echo "-DCMAKE_CXX_COMPILER=${PROJECT_PATH}/build/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \\" >>${PROJECT_PATH}/build/build.sh |
||||
|
chmod +x ${PROJECT_PATH}/build/build.sh |
||||
|
|
||||
|
} |
||||
|
|
||||
|
function do_flash_to_rk3328() { |
||||
|
scp -r out/${PROJECT_NAME}.tar.gz ${USER}@${IP}:${ROOTFS_APP_DIR} |
||||
|
#如果存在shutdown.sh,则先执行shutdown.sh |
||||
|
ssh ${USER}@${IP} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi' |
||||
|
ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && tar -xvf ${PROJECT_NAME}.tar.gz -C ${ROOTFS_APP_DIR}" |
||||
|
ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && rm -rf ${PROJECT_NAME}.tar.gz" |
||||
|
} |
||||
|
|
||||
|
############################################################################## |
||||
|
# |
||||
|
# Main: |
||||
|
# |
||||
|
############################################################################## |
||||
|
|
||||
|
# |
||||
|
# iflytool.sh envsetup rk3328 |
||||
|
# |
||||
|
# iflytool.sh --ip 192.168.8.100 build |
||||
|
# iflytool.sh --ip 192.168.8.100 --user root build <packet> <flash> <reboot> |
||||
|
# iflytool.sh --ip 192.168.8.100 --user root ssh_copy_id ssh_clear_id |
||||
|
# |
||||
|
|
||||
|
# 解析指令判断指令是否是 envsetup iflytool.sh envsetup rk3328 |
||||
|
|
||||
|
is_build=false |
||||
|
is_flash=false |
||||
|
is_reboot=false |
||||
|
is_envsetup=false |
||||
|
|
||||
|
for i in "$@"; do |
||||
|
case $i in |
||||
|
envsetup) |
||||
|
shift # past argument=value |
||||
|
BUILDFOR=$1 |
||||
|
is_envsetup=true |
||||
|
shift |
||||
|
;; |
||||
|
build) |
||||
|
is_build=true |
||||
|
shift |
||||
|
;; |
||||
|
flash) |
||||
|
is_flash=true |
||||
|
shift |
||||
|
;; |
||||
|
reboot) |
||||
|
is_reboot=true |
||||
|
shift |
||||
|
;; |
||||
|
packet) |
||||
|
is_packet=true |
||||
|
shift |
||||
|
;; |
||||
|
--user) |
||||
|
shift |
||||
|
USER=$1 |
||||
|
shift |
||||
|
;; |
||||
|
--ip) |
||||
|
shift |
||||
|
IP=$1 |
||||
|
shift |
||||
|
;; |
||||
|
*) |
||||
|
# unknown option |
||||
|
;; |
||||
|
esac |
||||
|
done |
||||
|
|
||||
|
# 判断是否是envsetup |
||||
|
if [ "$is_envsetup" = true ]; then |
||||
|
echo "envsetup $BUILDFOR" |
||||
|
echo "mkdir -p ${PROJECT_PATH}/build" |
||||
|
mkdir -p ${PROJECT_PATH}/build |
||||
|
|
||||
|
# 构造环境变量 |
||||
|
echo "BUILDFOR=$BUILDFOR" >${PROJECT_PATH}/build/buildenv |
||||
|
|
||||
|
#从CmakeLists.txt中读取项目名称 project(app) |
||||
|
PROJECT_NAME=$(grep "project(" ${PROJECT_PATH}/CMakeLists.txt) |
||||
|
PROJECT_NAME=${STR#*\(} |
||||
|
PROJECT_NAME=${PROJECT_NAME%\)*} |
||||
|
|
||||
|
#从字符串中 project(app)解析出app |
||||
|
STR="project(app)" |
||||
|
PROJECT_NAME=${STR#*\(} |
||||
|
PROJECT_NAME=${PROJECT_NAME%\)*} |
||||
|
|
||||
|
echo "PROJECT_NAME=$PROJECT_NAME" >>${PROJECT_PATH}/build/buildenv |
||||
|
|
||||
|
ROOTFS_APP_DIR="/" |
||||
|
echo "ROOTFS_APP_DIR=$ROOTFS_APP_DIR" >>${PROJECT_PATH}/build/buildenv |
||||
|
|
||||
|
if [ "$BUILDFOR" = "pc" ]; then |
||||
|
do_envsetup_pc |
||||
|
elif [ "$BUILDFOR" = "rk3328" ]; then |
||||
|
do_envsetup_rk3328 |
||||
|
else |
||||
|
echo "unknow build for $BUILDFOR" |
||||
|
exit 1 |
||||
|
fi |
||||
|
exit 0 |
||||
|
fi |
||||
|
|
||||
|
#如果flash 则默认编译打包 |
||||
|
if [ "$is_flash" = true ]; then |
||||
|
is_build=true |
||||
|
is_packet=true |
||||
|
fi |
||||
|
#如果打包,则默认编译 |
||||
|
if [ "$is_packet" = true ]; then |
||||
|
is_build=true |
||||
|
fi |
||||
|
#如果部署则默认需要IP |
||||
|
if [ "$is_flash" = true ] || [ "$is_reboot" = true ]; then |
||||
|
if [ -z "$IP" ]; then |
||||
|
echo "please input ip" |
||||
|
exit 1 |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
# 检查build目录是否存在 |
||||
|
if [ ! -d "${PROJECT_PATH}/build" ]; then |
||||
|
echo "build directory not exist, please run envsetup first" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
# 初始化环境变量 |
||||
|
source ${PROJECT_PATH}/build/buildenv |
||||
|
|
||||
|
# 编译 |
||||
|
if [ "$is_build" = true ]; then |
||||
|
echo "build" |
||||
|
cd ${PROJECT_PATH}/build |
||||
|
# 根据当前电脑线程数,调用make |
||||
|
./build.sh && make -j$(nproc) |
||||
|
fi |
||||
|
|
||||
|
# 打包 |
||||
|
if [ "$is_packet" = true ]; then |
||||
|
echo "packet for ${BUILDFOR}" |
||||
|
cd ${PROJECT_PATH} |
||||
|
${PROJECT_PATH}/sh/packet_${BUILDFOR}.sh |
||||
|
fi |
||||
|
|
||||
|
# 部署 |
||||
|
if [ "$is_flash" = true ]; then |
||||
|
if [ "$BUILDFOR" = "pc" ]; then |
||||
|
echo "WARNING:not support flash for pc" |
||||
|
elif [ "$BUILDFOR" = "rk3328" ]; then |
||||
|
do_flash_to_rk3328 |
||||
|
else |
||||
|
echo "unknow build for $BUILDFOR" |
||||
|
exit 1 |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
# 重启 |
||||
|
if [ "$is_reboot" = true ]; then |
||||
|
if [ "$BUILDFOR" = "pc" ]; then |
||||
|
echo "WARNING:not support reboot for pc" |
||||
|
elif [ "$BUILDFOR" = "rk3328" ]; then |
||||
|
ssh ${USER}@${IP} "reboot" |
||||
|
else |
||||
|
echo "unknow build for $BUILDFOR" |
||||
|
exit 1 |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
#ssh_copy_id |
||||
|
if [ "ssh_copy_id" = true ]; then |
||||
|
if [ "$BUILDFOR" = "pc" ]; then |
||||
|
echo "WARNING:not support ssh_copy_id for pc" |
||||
|
elif [ "$BUILDFOR" = "rk3328" ]; then |
||||
|
ssh-copy-id ${USER}@${IP} |
||||
|
else |
||||
|
echo "unknow build for $BUILDFOR" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
fi |
||||
|
|
||||
|
#ssh_clear_id |
||||
|
if [ "ssh_clear_id" = true ]; then |
||||
|
ssh ${USER}@${ip} "rm -rf ~/.ssh/authorized_keys" |
||||
|
fi |
@ -1,12 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
|
|
||||
set -e #如果某条指令执行出错,则会退出脚本 |
|
||||
|
|
||||
if [ $# -eq 0 ]; then |
|
||||
echo "Usage: $0 <ip>" |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
# 清除目标主机的ssh-key |
|
||||
ip=$1 |
|
||||
ssh root@${ip} "rm -rf ~/.ssh/authorized_keys" |
|
@ -1,17 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
|
|
||||
set -e #如果某条指令执行出错,则会退出脚本 |
|
||||
|
|
||||
if [ $# -eq 0 ]; then |
|
||||
echo "Usage: $0 <ip>" |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
# 检查ssh-key是否存在,不存在则退出 |
|
||||
if [ ! -f ~/.ssh/id_rsa.pub ]; then |
|
||||
echo "ssh-key not found, please run ssh-keygen first" |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
ip=$1 |
|
||||
ssh-copy-id root@${ip} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue