使用BASH从json文件中获取单行键值对,用于mongodb备份脚本

时间:2018-12-14 07:10:59

标签: python json mongodb bash

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

此json文件包含以下信息:

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

我在cronjob中使用了一个bash脚本,它将每天,每月,每周执行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魔术。

2 个答案:

答案 0 :(得分:2)

您可以使用jq bash命令来解析JSON文件。

示例test.json文件内容:

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

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

输出:2

答案 1 :(得分:1)

使用解析JSON。

jq -r '.mongodb_url' ~/.config/server_config.json