我想将我的Rapsberry配置为SMS Ping Pong播放器。所以我安装了gammu-smsd并按如下方式配置了gammu-smsdrc:
# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB3
pin= 4135
connection = at
# Debugging
logformat = textall
# SMSD configuration, see gammu-smsdrc(5)
[smsd]
RunOnReceive = sudo /var/spool/gammu/receivesms.sh
service = files
pin = 4135
# Increase for debugging information
debuglevel = 1
logfile = /var/spool/gammu/gammu.log
include_smsc = 491722270333
# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
到目前为止,发送短信接收短信工作正常!
所以我尝试了那个无法接受的事情。并写了一个小脚本,应该获取短信发送者号码和文本。如果文本是“ping”,gammu-smsd应该将pong发送给发件人。
reveivessms.sh:
#!/bin/sh
from=$SMS_1_NUMBER
message=$SMS_1_TEXT
reply=""
if test "$message" = "Ping"; then
reply="Pong!"
else
reply="Y U NO PLAY PING PONG?"
fi
sudo echo "$reply" | /usr/bin/gammu-smsd-inject -c /etc/gammu-smsdrc TEXT "$from"
gammu.log是:
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Received message from: +49160xxxxx
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Read 1 messages
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Received IN20160525_090429_00_+49160xxxxxx_00.txt
Wed 2016/05/25 09:04:31 gammu-smsd[21994]: Starting run on receive: sudo /var/spool/gammu/receivesms.sh IN20160525_090429_00_+49160xxxxxx_00.txt
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Process finished successfully
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: Found 1 sms to "" with text "Y U NO PLAY PING PONG?" cod 3 lgt 22 udh: t 1 l 0 dlr: -1 fls: -1
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: New message to send: OUTC20160525_090431_00__sms0.smsbackup
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: Message without SMSC, assuming you want to use the one from phone
Wed 2016/05/25 09:05:19 gammu-smsd[21681]: SMS sent on device: "/dev/ttyUSB3" status=500, reference=-1
Wed 2016/05/25 09:05:19 gammu-smsd[21681]: Error getting send status of message: Unknown error. (UNKNOWN[27])
嗯没有留言回复......
所以我尝试了不传递参数并将receivems.sh更改为:
#!/bin/sh
sudo echo Gude Wie | /usr/bin/gammu-smsd-inject -c /etc/gammu-smsdrc TEXT 49160xxxx
一切正常。似乎,传递给receicesms.sh的变量不起作用。但我不明白为什么?
答案 0 :(得分:2)
通过gammu-smsd-inject获取发送短信的接收是一项任务。
对于遇到此问题的其他人。我通过将gammu-smsd-inject命令的stdout和stderr重定向到/ dev / null来解决它。
echo "This somehow works" | gammu-smsd-inject TEXT $from > /dev/null 2>&1
此致
答案 1 :(得分:1)
问题是sudo没有将环境变量保留在默认配置中,所以我建议你不要在脚本中使用sudo。以root身份运行SMSD也是潜在的安全风险,因为在SMS解码中出现一些错误时,攻击者直接以root身份运行。
因此,以用户身份运行SMSD并更改/ var / spool / gammu和调制解调器/电话设备的权限会更好。
如果您坚持以root身份运行SMSD,请更改sudo配置以保留环境变量,请参阅How to keep Environment Variables when Using SUDO