Gammu:在接收退出状态1时运行

时间:2015-04-01 19:52:34

标签: sms raspberry-pi embedded-linux gammu

我尝试使用gammu和gammu-smsd使用华为内联网密钥发送和接收使用我的覆盆子pi的短信。 我的问题是,当我从手机发送sms到raspberry pi时,它会读取短信,它会尝试启动在RunOnReceive = / etc / gammu-smsdrcn文件中链接的程序但是,它说:进程失败并退出状态1。 我尝试过任何解决办法,但我自己无法解决这个问题。我已经为脚本设置了每个权限。 有人能帮我吗? 非常感谢你。

2 个答案:

答案 0 :(得分:3)

你无疑已经把这个排序了,但是我刚刚经历了同样的旅行,撕掉了很多头发并最终把它弄出来了......: - )

我正在使用带有wvdial的中兴通讯棒进行互联网连接。棒在/ dev / USBtty0,1和2上显示为调制解调器.wvdial使用USBtty2,因此gammu(我认为)必须使用不同的。

所以我在gammu-config和/ etc / gammu-smsdrc中的USBtty1上安装了gammu / gammu-smsd。接收守护进程gammu-smsd会在启动时自动启动。

年轻球员的第一个陷阱 - 如果你想发送短信    回声“不管”| gammu sendsms TEXT xxxyyyzzzz(最后一个是电话号码) - 你需要杀死接收守护进程才能工作,即

 service gammu-smsd stop     # kill receive daemon
 echo etc etc gammu etc etc  # send the SMS
 service gammu-smsd start    # revive the receive daemon

现在为RunOnReceive做事......

从sudovi开始 - 提供一些配置文件进行编辑。那里有关于pi BLAH-BLAH-BLAH作为sudoer的一条线。用gammu BLAH-BLAH-BLAH复制它。同样的BLAHs。保存它。

这与权限有关 - 我不是这里的专家: - )

所以我的RunOnReceive行是{sudo /home/pi/procSMS.sh $ SMS_1_TEXT}

脚本似乎不知道$ SMS_1_TEXT是什么,所以我将其作为参数传递 - 在脚本中它被视为$ 1。它有效。

测试时我在另一个窗口中运行了一个进程 - 只需使用tail -f / var / log / syslog,它可以实时查看所有进程......

答案 1 :(得分:0)

我在Raspberry Pi上遇到了与华为E3131相同的错误(进程失败并退出状态1)但我解决了它。

  1. 确保您已正确设置文件权限。 Gammu默认在“gammu”用户下运行deamon。因此,您可以将其(/etc/init.d/gammu-smsd)更改为已位于系统中并具有执行脚本权限的用户。或者通过以下方式更改脚本权限:chmod 755 script.sh。这意味着您也可以向其他用户授予执行权限。 实际上还有其他选择。使用参数-U username运行gammu deamon。不幸的是,当我使用root用户时,它对我不起作用。 PS:我建议不要将脚本放在/ etc目录中。请改用/ home目录。

  2. /etc/gammu-smsdrc开启debuging。在smsd部分中使用参数:logformat和debuglevel。默认日志位于/var/log/syslog。可能会帮助您深度定位问题。

  3. 最后最好的...我发现gammu即使运行脚本也会返回错误!你必须在bash脚本中编写退出代码。如果未指定退出代码,gammu将其表示为错误1.如果脚本结束时成功添加exit 0,则错误消息将消失。