首页 > 解决方案 > 使用 BASH 为 mongodb 备份脚本从 json 文件中获取单行键值对

问题描述

我有一个位于 ~/.config/server_config.json 的配置文件

此 json 文件包含以下信息:

{
    "server_name": "server1",
    "mongodb_url":"mongodb://user:password@localhost:27017/dbname"
    "other stuff": "stuff2"
}

我有一个 bash 脚本,我在 cronjob 中使用,它将每天、每月、每周执行一次 mongodump,并执行自动轮换备份、gzip 等。

我希望能够检查这个配置文件是否存在 mongodb_url。

如果存在,请使用包含用户名和密码的 url 传递到 mongodump 脚本。

如果 json 文件中不存在 mongodb url,请使用 localhost 正常运行 mongodump 命令,无需身份验证。

这是备份脚本的一个片段

else # daily
    echo "Starting critical tables daily backup $(date)" >> $LOG_LOCATION
    for DATABASE in ${FULL_BACKUPS_ONLY_LIST//,/ }
        do
            for TABLE in ${CRITICAL_TABLES_LIST//,/ }
            do
                    echo "backing up $DATABASE $TABLE ..."
                    mongodump -d $DATABASE -c $TABLE --out $FINAL_BACKUP_DIR
            done
        done
fi

我基本上希望能够解析这个 json 文件以使用包含用户名和密码的正确 mongodb url。

我正在考虑使用 python 首先解析 json 文件,然后将 url 作为输入参数发送到 bash 脚本中,因为用 bash 解析 json 似乎非常困难。除非有一些 sed/awk 魔法可以发生。

标签: pythonjsonmongodbbash

解决方案


您可以使用jqbash 命令解析 JSON 文件。

示例test.json文件内容:

{
    "a": 1,
    "b": 2,
    "c": 4
}

bash 命令:jq '.b' test.json

输出:2


推荐阅读