页面载入中,请稍后...

点我安装PWA
您已拒绝通知
    广告广告

    【Bash使用或解析json做配置】

    qaq卟言2024-04-22 08:43:29 LinuxBash
    小人奔跑效果开始
    • 问题起源
    • 之前写的系统巡检脚本,如果检测到异常会一直发消息通知我🤫
    • Bash使用或解析json做配置1.png
    • 实在是太烦人,其实发送一次就行了,然后正常了再发送一次就行了😒
    • 突然想起来我可以使用json做配置文件,毕竟我系统上面安装了jq
    • 可以用来解析json的数据,当然你如果没有安装的话可以安装
    • 毕竟Bash本身缺乏内置的json解析能力,使用jq命令行进行处理json,可以填补这一空白
    • 安装命令
    • sudo apt-get install jq
    • 解决方法
    • 我的想法是通过默认json配置文件,如果异常就修改字段
    • 然后再推送消息,下一次判断服务变更的时候,跟默认的配置是否一致
    • 不一致的时候发送信息就行了,这样子只要是配置字段不一样的时候才发送信息
    • 就不会疯狂的推送消息给我,只有在配置修改的时候发送就行了
    • 配置文件
    • 既然使用了json做配置,那就顺便把定义的变量也放进配置里面
    • Bash使用或解析json做配置2.png
    • 创建配置
    • touch date.json
    • {
          "waf": {
              "time": "60",
              "file": "/www/server/nginx/logs/waf/"
          },
          "status": {
              "temperature": "55",
              "disk_threshold": "80",
              "mem_threshold": "50",
              "cpu_threshold": "50",
              "service": "80,88,8080,3030,25565,23333",
              "bmc": "正常"
          },
          "notice_qq": "2117944029,2061667753"
      }
    • Bash使用或解析json做配置3.png
    • 获取数据
    • 我只是需要监控bmc的状态,其他的服务状态就不需要弄了😏
    • 比如磁盘如果报警也没必要就提醒一次,因为他也不可以自己会空
    • 还有就是CPU内存之类的实时监控的效果就没有了,超过阈值就一直报警
    • 谁知道是服务器被攻击还是啥🙄
    • 获取二级字段
    • jq '.status.bmc' data.json | sed 's/"//g'
    • 输出正常,说明成功获取到字段了
    • Bash使用或解析json做配置4.png
    • 后面的sed是过滤"的,不然输出就是"正常"
    • 那现在就修改变量获取的配置
    • Bash使用或解析json做配置5.png
    • 修改数据
    • 可以通过
    • jq '.status.bmc = "离线"' data.json
    • 来获取修改后的内容
    • Bash使用或解析json做配置6.png
    • 写入数据
    • 写入的话就直接用echo就行了
    • echo -n $(jq '.status.bmc = "离线"' /media/buyan/1/脚本监控/系统巡检/data.json)>/media/buyan/1/脚本监控/系统巡检/data.json
    • -n是取消后面的换行
    • 判断数据
    • 直接通过判断jq '.status.bmc' data.json | sed 's/"//g'是否等于某一个值就行
    • if [  $(jq '.status.bmc' data.json | sed 's/"//g') == "正常" ]  ; then
          echo "ok"
      else
          echo "no"
      fi
    • Bash使用或解析json做配置7.png
    • 修改脚本
    • 找到代码块
    • Bash使用或解析json做配置8.png
    • 加入上面的判断
    • Bash使用或解析json做配置9.png
    • 当然这里我只是截了一个异常处理代码块的图
    • 异常的时候判断配置文件的字段是不是离线的,不然就修改然后推送信息
    • 正常的时候也是一样,如果配置是不是在线的,就修改配置进行推送信息
    • 如果状态跟配置字段是一样的就不进行操作
    • 执行测试
    • 先断开bmc的链接,过一下再连接
    • Bash使用或解析json做配置10.png
    • Bash使用或解析json做配置11.png
    • 发现只是推送一次,完美解决
    完结

    🔖本文来源:qaq卟言的个人博客网站声明如损害你的权益请联系我们

    ©️版权声明:本文为【qaq卟言】原创文章,写作不易,转载请您添加本文链接,谢谢您的合作!

    📜著作协议:《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

    ⚠️部分文章图片来自网络,可能存在版权问题。如发现相关争议请联系qaq卟言处理!

    🔗

    广告广告

    随机文章

    该文章已经关闭评论,评论请前往留言信箱