Gammu:运行 收到退出状态 1

Gammu: run on receive exit status 1

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

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

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

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

年轻玩家的第一个陷阱 - 如果你想发送短信 回声 "whatever" | gammu sendsms TEXT xxxyyyzzzz(最后一个是phone no)——你需要杀死接收守护进程才能工作,即

 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。有效。

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

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

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

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

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