|
@@ -1,31 +1,75 @@
|
|
|
#!/bin/bash
|
|
|
+# 检查到未定义的变量则停止执行并报错
|
|
|
+set -u
|
|
|
|
|
|
# 检查参数数量
|
|
|
-if [ "$#" -ne 3 ]; then
|
|
|
+if [ "$#" -ne 2 ]; then
|
|
|
echo "Error: Incorrect number of arguments"
|
|
|
- echo "Usage: $0 arg1 arg2 arg3"
|
|
|
+ echo "Usage: $0 arg1 arg2"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
-SUDO_PASSWORD=$1
|
|
|
-CONTAINER_NAME=$2
|
|
|
-DOWNLOAD_FILE_PATH=$3
|
|
|
+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 # 非敏感目录
|
|
|
+}
|
|
|
+
|
|
|
# 清除历史文件
|
|
|
-echo "$SUDO_PASSWORD" | sudo -S rm -rf $UPDATE_DATA_PATH/*
|
|
|
+# 检查要删除的目录是否为空
|
|
|
+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 [ "$(echo "$SUDO_PASSWORD" | sudo -S docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" = "true" ]; then
|
|
|
+if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" = "true" ]; then
|
|
|
echo "Container $CONTAINER_NAME is already running."
|
|
|
else
|
|
|
echo "Starting container $CONTAINER_NAME..."
|
|
|
- echo "$SUDO_PASSWORD" | sudo -S docker start "$CONTAINER_NAME"
|
|
|
+ docker start "$CONTAINER_NAME"
|
|
|
fi
|
|
|
|
|
|
# 容器内执行地图更新脚本
|
|
|
-echo "$SUDO_PASSWORD" | sudo -S docker exec "$CONTAINER_NAME" /bin/bash -c "source $CONTAINER_WORKSPACE/devel_isolated/setup.sh && $CONTAINER_WORKSPACE/build_map.sh $CONTAINER_WORKSPACE/config.json"
|
|
|
+docker exec "$CONTAINER_NAME" /bin/bash -c "source $CONTAINER_WORKSPACE/devel_isolated/setup.sh && $CONTAINER_WORKSPACE/build_map.sh $CONTAINER_WORKSPACE/config.json"
|