首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gammu runonreceive不传递变量

Gammu runonreceive不传递变量
EN

Stack Overflow用户
提问于 2016-05-25 07:11:30
回答 2查看 1.8K关注 0票数 1

我想配置我的Rapsberry作为一个短信乒乓球运动员。因此,我安装了gammu-smsd,并将gammu-smsdrc配置如下:

代码语言:javascript
复制
# 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应该将乒乓发件人发回。

reveivessms.sh:

代码语言:javascript
复制
#!/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是:

代码语言:javascript
复制
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])

嗯没有留言回答..。

因此,我尝试不传递参数,并将receivesms.sh更改为:

代码语言:javascript
复制
#!/bin/sh
sudo echo Gude Wie | /usr/bin/gammu-smsd-inject -c /etc/gammu-smsdrc TEXT 49160xxxx

一切都正常。似乎,传递给receicesms.sh的变量不起作用。但我不知道为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-30 18:25:05

通过gammu-smsd-inject来发送短信回复是一项任务。

对任何遇到这个问题的人来说。我通过将命令的stdout和stderr重定向到/dev/null来解决这个问题。

代码语言:javascript
复制
echo "This somehow works" | gammu-smsd-inject TEXT $from > /dev/null 2>&1

问候

票数 2
EN

Stack Overflow用户

发布于 2016-05-27 07:09:34

问题是sudo没有将环境变量保留在默认配置中,所以我建议您避免在脚本中使用sudo。将SMSD作为root运行也是潜在的安全风险,因为如果在SMS解码中出现一些错误,攻击者将直接以root身份运行。

因此,最好以用户身份运行SMSD,并相应地更改/var/spool/gammu和调制解调器/电话设备的权限。

如果坚持以root方式运行SMSD,请更改sudo配置以保持环境变量,请参见How to keep Environment Variables when Using SUDO

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37430151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档