通过邮件方式把报表导出,主要原理是利用curl拼接图片的URL地址,然后以附件的形式把图片通过邮件发送出去。

  下面以具体事例说明:

http://192.168.36.130/zabbix/chart2.php?graphid=2649&period=3600&stime=20151019143624

wKioL1YmA3Oityo0AALhjoEqKzo405.jpg通过脚本把该图片过滤出来,然后利用邮件发送出去

主要脚本为:

curl -s -c $COOKIE -b $COOKIE  -d "request=&name=${NAME}&password=${PASSWD}&autologin=1&enter=Sign+in" $URL //主要功能是记录cookie,成功登陆进zabbix服务器

[[ ! -s "$COOKIE" ]] && exit 0    //对cookie进行各判断

下面这个命令的主要作用是把图片过滤出来存放到某个目录下

参数说明:

grapid 图片ID

period(获取数据的时间段)可以是1小时,1周,1一个月等以秒为单位 PERIOD=604800

curtime 当前时间 STIME=$(date +%Y%m%d%H%M%S)

width 图片的宽度 WHIDTH=1200

curl -s -b $COOKIE \

    -F "graphid=${CPU_ITEMID[i]}" \

    -F "period=$PERIOD" \

    -F "curtime=$STIME" \

    -F "width=$WHIDTH" \

    "$URL2/chart2.php" > cpu_png/${i}.png

发送邮件:

echo "附件为抽查服务器cpu idle曲线图" | /bin/mailx -s "$CPU_TITLE" $CPU_PNG $EMAIL

"$CPU_TITLE" 邮件主题

$CPU_PNG 附件内容CPU_PNG="-a xxx.png"

$EMAIL 邮件地址

以上功能可以实现基本的报表以附件形式导出,只是麻烦之处在于graphid的获取,后期逐步完善其他形式的报表导出。