sms tools

установка


yum -y install epel-release smstools

скрипт event

#!/bin/bash
host="127.0.0.1"
user="userdb"
pass="password"
db="smsdb"
table="rawlog"
mysql="/usr/bin/mysql"
case "$1" in
SENT|RECEIVED|FAILED)
if sed -e '/^$/ q' < "$2" | grep "^Alphabet: UCS-2BE" > /dev/null; then
TMPFILE=mktemp /tmp/smsd_XXXXXX
sed -e '/^$/ q' < "$2" | sed -e 's/Alphabet: UCS2/Alphabet: UTF-8/g' > $TMPFILE
tail -n 1 $2 | iconv -f UCS-2BE -t CP1251 >> $TMPFILE
chmod 0666 $TMPFILE
mv $TMPFILE "$2"
fi
;;
esac
DATE=date +"%Y-%m-%d %H:%M:%S"
Extract data from the SMS file
FROM=formail -zx From: < $2 | sed 's/"//g'
Extra line for populating "Send" field in case of "FAILED" or "SENT"
MODEM=formail -zx Modem: < $2 | sed 's/"//g'
TO=formail -zx To: < $2
Remove plus sign, spaces, minus and short number prefix
TO=echo "$TO" | sed 's/ //g' | sed 's/+//g' | sed 's/s//g' | sed 's/-//g'
SUBJECT=formail -zx Subject: < $2
SENT=formail -zx Sent: < $2
TEXT=tail -n1 $2
TEXTSQL=$(tail -n1 $2 | iconv -f UNICODEBIG -t UTF8 | sed 's/\/\\/g' | sed 's/\"/\\"/g')
Set some SQL parameters
SQL="${mysql} --host=${host} --user=${user} --password=${pass} --database=${db}"
Insert a new entry into the SQL table
if [ "$1" = "FAILED" ] || [ "$1" = "SENT" ]; then
${SQL} --execute="insert into ${table} (smsfilename,type,sent,sender,receiver,msgid,text) values (\"$2\",\"$1\",\"$DATE\",\"$MODEM\",\"$TO\",\"$3\",\"$TEXTSQL\");"
COUNT=${SQL} -N -e "select COUNT(*) AS '1' FROM rawlog MONTH(unixtime) = MONTH(CURDATE());"
if [ "$COUNT" = 1500 ]; then
sudo smssend +79637105255 "Мы близки к первышению тарифа по СМС номера +7(926)900-45-37 и +7(925)905-83-70, текущее значение отправленных $COUNT" #уведомление ответственным
fi
elif [ "$1" = "RECEIVED" ]; then
${SQL} --execute="insert into ${table} (smsfilename,type,sent,received,sender,receiver,text) values (\"$2\",\"RECEIVED\",\"$SENT\",\"$DATE\",\"$FROM\",\"$SUBJECT\",\"$TEXT\");"
elif [ "$1" = "REPORT" ]; then
Extract more data from the status report file
DISCHARGE=`sed -e 1,/SMS\ STATUS/d < $2 | formail -zx Discharge_timestamp:` MSGID=`sed -e 1,/SMS\ STATUS/d < $2 | formail -zx Message_id:` STATUS=`sed -e 1,/SMS\ STATUS/d < $2 | formail -zx Status: | cut -f1 -d,` if [ "$MSGID" != "" ]; then ID=`${SQL} --execute="select id from ${table} where receiver=\"$FROM\" and type=\"SENT\" and msgid=\"$MSGID\" order by id desc limit 1;"` ${SQL} --execute="update ${table} set received=\"$DISCHARGE\",status=\"$STATUS\" where id=\"$ID\";" fi
fi

sql table


CREATE TABLE rawlog (
id INTEGER(20) NOT NULL AUTO_INCREMENT,
unixtime TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
smsfilename VARCHAR(50) COLLATE utf8_general_ci NOT NULL,
type VARCHAR(50) COLLATE utf8_general_ci NOT NULL,
sent VARCHAR(200) COLLATE utf8_general_ci NOT NULL,
sender VARCHAR(200) COLLATE utf8_general_ci NOT NULL,
received VARCHAR(200) COLLATE utf8_general_ci DEFAULT NULL,
msgid VARCHAR(20) COLLATE utf8_general_ci DEFAULT NULL,
text VARCHAR(200) COLLATE utf8_general_ci NOT NULL,
receiver VARCHAR(11) COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY USING BTREE (id),
UNIQUE KEY id USING BTREE (id)
) ENGINE=MyISAM
AUTO_INCREMENT=1116 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
;
Запись опубликована в рубрике Новости. Добавьте в закладки постоянную ссылку.