#!/bin/bash #不配置字符集,腳本放到crontab裏發出的中文E-MAIL亂碼 export LANG=en_US.UTF-8 #有點強迫症,習慣什麼東西在什麼地方幹 ^_^ cd /home/zabbix/graph #保存cookie文件名 COOKIE=zbx_cookie.txt > $COOKIE #我是在zbx上開一個組,弄一個只讀帳號,把想出圖的主機放進去。 NAME="reader" PASSWD="123456789" #EMAIL木什麼好說地,有幾個e-mail並排寫就好啦。 EMAIL="haha@abc.com hehe@abc.com lala@123.com" #須要提取數據的IP地址,其實這個IP主要是用來給圖片命名用的。恩恩 IPADDR=(192.168.1.1 192.168.1.2) #這個地方比較麻煩,由於itemid是惟一的,因此須要本身肉眼高速掃描的去查。 #這裏咱們拿內存和cpu來舉個例子吧。恩恩。
CPU_ITEMID=(12345 67890) MEM_ITEMID=(98765 65432) #咱們高大上的zbx地址 URL="http://127.0.0.1" #登陸保存cookie curl -s -c $COOKIE -b $COOKIE -d "request=&name=${NAME}&password=${PASSWD}&autologin=1&enter=Sign+in" $URL #仍是強迫症,木辦法。 [[ -d cpu_png ]] || mkdir cpu_png [[ -d mem_png ]] || mkdir mem_png #PERIOD配置獲取數據的時間段,用秒數來表示。 #ld需求要7天內的。604800,你們都懂的。 #這裏舉個例子我寫的3600。 PERIOD=3600 #這是咱們的開始時間,也就是當前時間, STIME=$(date +%Y%m%d%H%M%S) #圖片寬度 WHIDTH=1200 #我是針對ITEMID組來進行循環建立圖片的,爲了顯的好看點,我才這麼寫的。
#要不橫着寫起來太長鳥~!大家懂的。咱們開始拼url for i in $(seq 0 $[${#CPU_ITEMID[@]}-1]);do curl -s -b $COOKIE \ -F "itemid=${CPU_ITEMID[i]}" \ -F "period=$PERIOD" \ -F "curtime=$STIME" \ -F "width=$WHIDTH" \ "$URL/chart.php" > cpu_png/${IPADDR[i]}_cpu.png done for i in $(seq 0 $[${#MEM_ITEMID[@]}-1]);do curl -s -b $COOKIE \ -F "itemid=${MEM_ITEMID[i]}" \ -F "period=$PERIOD" \ -F "curtime=$STIME" \ -F "width=$WHIDTH" \ "$URL/chart.php" > mem_png/${IPADDR[i]}_mem.png done
#我開始有點懶了,反正圖片都出來了愛怎麼地怎麼地吧。我手動拼的。 CPU_PNG="-a cpu_png/192.168.1.1_cpu.png -a cpu_png/192.168.1.2_cpu.png" MEM_PNG="-a mem_png/192.168.1.1_mem.png -a mem_png/192.168.1.2_mem.png" #E-MAIL的TITLE,都懂的。不解釋了。 CPU_TITLE="$(date +%Y年%m月%d日) Cpu idle 曲線圖" MEM_TITLE="$(date +%Y年%m月%d日) Memory realused 曲線圖" #卡卡卡開始對ld進行郵件轟炸,用不用寫個死循環呢。:p echo "附件爲抽查服務器cpu idle曲線圖" | mail -s "$CPU_TITLE" $CPU_PNG $EMAIL echo "附件爲抽查服務器memory realused曲線圖" | mail -s "$MEM_TITLE" $MEM_PNG $EMAIL #作事要乾淨,吃完飯記得擦嘴。 [[ -d cpu_png ]] && rm -rf cpu_png [[ -d mem_png ]] && rm -rf mem_png exit 0
其實就是根據這個url本身拼的。php
最後呈現出來的樣子就係這樣啦。bash