看到同事写了shell脚本通过访问线上的db,监控业务数据并发送邮件。蛮有意思的,记录下。
#!/bin/bash myHome=`cd $(dirname $0); pwd` cd $myHome mailfile="$myHome/quantity-lock-error.`date +'%Y-%m-%d'`" echo "sc_item_id,store_code,quantity,lock_quantity,occupy_quantity,gmt_modified" > $mailfile sh check_quantity_lock.sh | tr -s '\t' ',' >> $mailfile TO="abc@abc.com" if [ `wc -l $mailfile | awk '{print $1}'` -ne 1 ]; then $myHome/email -V -smtp-server 121.0.29.128 -smtp-port 25 -from-addr abc@ddd.com -from-name "abc" -subject "bcd" -no-encoding $TO < $mailfile else wc -l $mailfile fi
执行db的脚本;
#!/bin/bash for i in `seq 0 4095` do scitemid=`echo $i ` tbIndex=`./calkey.sh $scitemid | head -1` dbIndex=`./calkey.sh $scitemid | sed -n 2p` dbHost=`./calkey.sh $scitemid | sed -n 3p | cut -d : -f 1` port=`./calkey.sh $scitemid | sed -n 3p | cut -d : -f 2` echo "use tmall_inventory_`printf %04d $dbIndex`;" > sql echo "select sc_item_id, store_code, quantity, lock_quantity, occupy_quantity, gmt_modified from ipc_inventory_`printf %04d $tbIndex` where quantity < occupy_quantity and inventory_type=1 and app=1 and is_deleted=0 and gmt_modified > \"2013-04-01 00:00:00\"; " >> sql mysql -h $dbHost -P $port -u username -ppassword < sql | grep -v sc_item_id done
其中calkey.sh是辅助脚本,用来取得配置信息;
email 是一个发送邮件的脚本。