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),但我解决了。
确保您已正确设置文件权限。 Gammu 默认在 "gammu" 用户下运行 deamon。因此,您可以将它 (/etc/init.d/gammu-smsd
) 更改为已经位于您的系统中并有权执行脚本的用户。或者通过以下方式更改脚本权限:chmod 755 script.sh
。这意味着您也将执行权限授予其他用户。
事实上还有额外的选择。 运行 带有参数 -U username
的 gammu 守护进程。不幸的是,当我使用 root 用户时它对我不起作用。
PS:我建议不要将脚本放在 /etc 目录中。请改用 /home 目录。
在 /etc/gammu-smsdrc
中打开调试。使用参数:smsd 部分中的 logformat 和 debuglevel。默认日志位于 /var/log/syslog
。可能会帮助您深入定位问题。
最后最好的...我发现 gammu returns 错误,即使它运行脚本很好!您必须在 bash 脚本中编写退出代码。如果您不指定退出代码,gammu 将其表示为错误 1。如果成功,请在脚本末尾添加 exit 0
,错误消息将消失。
我正在尝试使用 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),但我解决了。
确保您已正确设置文件权限。 Gammu 默认在 "gammu" 用户下运行 deamon。因此,您可以将它 (
/etc/init.d/gammu-smsd
) 更改为已经位于您的系统中并有权执行脚本的用户。或者通过以下方式更改脚本权限:chmod 755 script.sh
。这意味着您也将执行权限授予其他用户。 事实上还有额外的选择。 运行 带有参数-U username
的 gammu 守护进程。不幸的是,当我使用 root 用户时它对我不起作用。 PS:我建议不要将脚本放在 /etc 目录中。请改用 /home 目录。在
/etc/gammu-smsdrc
中打开调试。使用参数:smsd 部分中的 logformat 和 debuglevel。默认日志位于/var/log/syslog
。可能会帮助您深入定位问题。最后最好的...我发现 gammu returns 错误,即使它运行脚本很好!您必须在 bash 脚本中编写退出代码。如果您不指定退出代码,gammu 将其表示为错误 1。如果成功,请在脚本末尾添加
exit 0
,错误消息将消失。