2

我正在尝试使用 gammu 和 gammu-smsd 使用华为内部网密钥通过我的树莓派发送和接收短信。我的问题是,当我从手机向树莓派发送短信时,它会读取短信,它会尝试启动 /etc/gammu-smsdrcn 文件中的 RunOnReceive = 链接的程序,但随后显示:进程失败,退出状态1.我尝试了任何一种解决方案,但我无法自己解决这个问题;我已经在脚本上设置了每个权限。有人能帮我吗?十分感谢。

4

2 回答 2

3

毫无疑问,你现在已经解决了这个问题,但我刚刚经历了同样的旅行,扯掉了很多头发,最后把它从后面弄了出来.... :-)

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

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

年轻球员的第一个陷阱——如果你想用 echo "whatever" 发送短信 | gammu sendms 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 复制它。相同的 BLAH。保存。

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

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

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

在测试时,我在另一个窗口中运行了一个进程 - 只需 tail -f /var/log/syslog 即可让您实时观看所有内容......

于 2015-07-14T02:03:43.183 回答
0

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

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

  2. 打开调试/etc/gammu-smsdrc。使用参数:smsd 部分中的 logformat 和 debuglevel。默认日志位于/var/log/syslog. 也许它可以帮助您深入定位问题。

  3. 最后是最好的......我发现 gammu 即使脚本运行良好也会返回错误!您必须在 bash 脚本中编写退出代码。如果不指定退出代码,gammu 将其表示为错误 1。exit 0在脚本末尾添加成功的情况,错误消息消失。

于 2016-03-13T21:46:15.390 回答