123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/bin/bash
- # 检查到未定义的变量则停止执行并报错
- set -u
- # 检查参数数量
- if [ "$#" -ne 2 ]; then
- echo "Error: Incorrect number of arguments"
- echo "Usage: $0 arg1 arg2"
- exit 1
- fi
- CONTAINER_NAME=$1
- DOWNLOAD_FILE_PATH=$2
- UPDATE_DATA_PATH="/home/cicv/work/pji_desktop/map_update/data"
- CONTAINER_WORKSPACE="/home/cartographer_detailed_comments_ws-master"
- SENSITIVE_DIRS=(
- "/"
- "/bin"
- "/boot"
- "/dev"
- "/etc"
- "/home"
- "/lib"
- "/lib64"
- "/opt"
- "/proc"
- "/root"
- "/sbin"
- "/sys"
- "/tmp"
- "/usr"
- "/var"
- "/home/cicv"
- )
- is_sensitive_directory() {
- local dir="$1"
- for sensitive_dir in "${SENSITIVE_DIRS[@]}"; do
- if [[ "$dir" == "$sensitive_dir" ]]; then
- return 0 # 敏感目录
- fi
- done
- return 1 # 非敏感目录
- }
- # 清除历史文件
- # 检查要删除的目录是否为空
- if [[ -z "$UPDATE_DATA_PATH" ]]; then
- echo "Error: Variable UPDATE_DATA_PATH is not set or empty"
- exit 1
- fi
- # 检查要删除的目录是否为敏感目录
- if is_sensitive_directory "$UPDATE_DATA_PATH"; then
- echo "Error: '$UPDATE_DATA_PATH' is a sensitive directory and can not be deleted!"
- exit 1
- fi
- # 删除对应目录
- sudo rm -rf "$UPDATE_DATA_PATH"
- # 解压地图更新对应的压缩包
- unzip "$DOWNLOAD_FILE_PATH" -d "$UPDATE_DATA_PATH"
- # 检查容器启动状态
- if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" = "true" ]; then
- echo "Container $CONTAINER_NAME is already running."
- else
- echo "Starting container $CONTAINER_NAME..."
- docker start "$CONTAINER_NAME"
- fi
- # 容器内执行地图更新脚本
- docker exec "$CONTAINER_NAME" /bin/bash -c "source $CONTAINER_WORKSPACE/devel_isolated/setup.sh && $CONTAINER_WORKSPACE/build_map.sh $CONTAINER_WORKSPACE/config.json"
|