shell 脚本 自动创建zabbix screen聚合图

#!/bin/bash

domain_url="zabbix.yibang.com/api_jsonrpc.php"

#得到auth 加密串。
auth_key=`curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"my_username","password":"123456"},"auth":null,"id":0}' $domain_url | jq .result | tr -d \"`

#取所有主机的ID 和 名字  ,保存为 文本 。    
curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"host.get","params":{"output":["host"]},"auth": "'$auth_key'","id": 0}' $domain_url | jq | tr -d \" > /tmp/host_id.txt
curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"host.get","params":{"output":["host"]},"auth": "'$auth_key'","id": 0}' $domain_url | jq .result[].host | tr -d \" > /tmp/host_name.txt
echo '{"resourcetype": 0,"resourceid": "GRAPH_ID","width": 500,"height": 100,"rowspan": 1,"colspan": 1,"x": SCREEN_X,"y": SCREEN_Y}' > /tmp/temp.txt

while read i ; do
    echo -e "\n$i"
    hostid=`grep -w "$i" -B 1 /tmp/host_id.txt | grep -Eo '[0-9]{5}'`
    
    #查找指定主机  的所有图形名,id 。  extend可加【】 ,无[],extend:返回图形的所有参数。
    curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"graph.get","params":{"output":"[extend]","hostids": "'$hostid'","sortfield": "name"},"auth": "'$auth_key'","id": 0}' $domain_url | jq > /tmp/graph.txt


    grep -B 1 'CPU load' /tmp/graph.txt | grep -Eo '[0-9]{3,6}' > /tmp/graph_id.txt
    grep -B 1 'CPU utilization' /tmp/graph.txt | grep -Eo '[0-9]{3,6}' >> /tmp/graph_id.txt
    grep -B 1 'Memory free' /tmp/graph.txt | grep -Eo '[0-9]{3,6}' >> /tmp/graph_id.txt
    grep -B 1 'Memory utilization' /tmp/graph.txt | grep -Eo '[0-9]{3,6}' >> /tmp/graph_id.txt
    grep -B 1 'TCP STATUS' /tmp/graph.txt | grep -Eo '[0-9]{3,6}' >> /tmp/graph_id.txt
    grep -B 1 'Network traffic on' /tmp/graph.txt | grep -Eo '[0-9]{3,6}'  >> /tmp/graph_id.txt
    grep -B 1 'Disk utilization and queue' /tmp/graph.txt | grep -Eo '[0-9]{5,6}'  >> /tmp/graph_id.txt
    grep -B 1 'Disk space usage' /tmp/graph.txt | grep  -Eo '[0-9]{3,6}'  >> /tmp/graph_id.txt
    
    sed -i '/^$/d'  /tmp/graph_id.txt
    line=`cat /tmp/graph_id.txt | wc -l`
    
    screen_x=(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1)
    screen_y=(0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20)
    
    #如果graph_id.txt文本有10行,那下标为0-9 , 行数为1-10 , 每行行末加个逗号 。 最后一行行末去掉逗号。
    graph_json=$(for ((x=0;x<$line;x++)) ; do
        line_num=`expr $x + 1`
        graph_id=`sed -n "${line_num}p" /tmp/graph_id.txt`
        cat /tmp/temp.txt | sed 's/GRAPH_ID/'$graph_id'/g' | sed 's/SCREEN_X/'${screen_x[$x]}'/g' | sed 's/SCREEN_Y/'${screen_y[$x]}'/g'  | sed 's/$/,/g'
    done | sed '$s/,$//')
    
    Y_axis=`expr $((line+2))/2|bc`
    
    
    
    ## "hsize":"2","vsize":"'${Y_axis}'"  这是按2列 , XX 行 , 建的screen .
my_json='
{"jsonrpc":"2.0","method":"screen.create","params":{"name":"'$i'","hsize":"2","vsize":"'${Y_axis}'","screenitems": [
'$graph_json'
]},"auth":"'$auth_key'","id":0} '
    
    
curl -s -X POST -H 'Content-Type: application/json' -d "$my_json" $domain_url

done < /tmp/host_name.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值