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



我有一个配置文件位于~/.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魔法可以发生。

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

示例test.json文件内容:

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

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

输出:2

使用jq解析JSON。

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

最新更新