linux - gammu-smsd RunOnReceive 脚本结果退出状态 2

标签 linux bash sms file-permissions gammu

我想使用 gammu-smsd RunOnReceive 转发短信。

这是我想要运行的脚本 (/var/spool/gammu/forward.sh),如果我从 sudoer 或使用 sudo -u gammu -g gammu /var/spool/gammu/forward.sh 运行它,它会完美运行。

#!/bin/bash

SMS_MESSAGES=1

for i in `seq $SMS_MESSAGES`
do
    number="SMS_${i}_NUMBER"
    text="SMS_${i}_TEXT"
    eval "gammu-smsd-inject TEXT my_number_goes_here -text \"${!number}: ${!text}\""
done

这是我遇到的问题:

Thu 2015/01/29 23:08:57 gammu-smsd[2549]: Starting run on receive: /var/spool/gammu/forward.sh IN20150130_000850_00_+37368214400_00.txt 
Thu 2015/01/29 23:08:57 gammu-smsd[2154]: Process failed with exit status 2

ls -l /etc/gammu-smsdrc /var/spool/gammu/ /usr/bin/gammu-smsd* 的输出:

-rw-r--r-- 1 root root   457 Jan 29 22:44 /etc/gammu-smsdrc
-rwxrwxrwx 1 root root 14336 Jun 10  2012 /usr/bin/gammu-smsd
-rwxrwxrwx 1 root root 51164 Jun 10  2012 /usr/bin/gammu-smsd-inject
-rwxrwxrwx 1 root root  9972 Jun 10  2012 /usr/bin/gammu-smsd-monitor

/var/spool/gammu/:
total 24
drwxrwxrwx 2 gammu gammu 4096 Jan 28 16:02 error
-rwxrwxrwx 1 gammu gammu  189 Jan 29 22:13 forward.sh
drwxrwxrwx 2 gammu gammu 4096 Jan 29 23:08 inbox
-rw-rw-r-- 1 gammu gammu 3702 Jan 29 23:08 log
drwxrwxrwx 2 gammu gammu 4096 Jan 29 23:07 outbox
drwxrwxrwx 2 gammu gammu 4096 Jan 29 23:07 sent

如果我这样做 ./forward.sh 会发生什么(不是root)-所以一切都好:

gammu-smsd-inject[2606]: Created outbox message OUTC20150029_231213_00_my_number_here_sms0.txt
Written message with ID /var/spool/gammu/outbox/OUTC20150029_231213_00_my_number_here_sms0.txt

这是我的/etc/gammu-smsdrc

# Configuration file for Gammu SMS Daemon

[gammu]
port = /dev/ttyUSB0
connection = at

[smsd]
service = files

logfile = /var/spool/gammu/log

debuglevel = 2

commtimeout = 1
sendtimeout = 15
statusfrequency = 0

outboxformat = unicode
transmitformat = unicode

RunOnReceive = /var/spool/gammu/forward.sh

inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

ps -fe | grep gammu :

gammu     2154     1  0 23:05 ?        00:00:02 /usr/bin/gammu-smsd --daemon --user gammu --pid /var/run/gammu-smsd.pid
cubie     2644  2403  0 23:20 pts/0    00:00:00 grep gammu

请帮忙

最佳答案

我也遇到了同样的问题,我是这样解决的:

  1. 首先将 gammu 用户添加到 sudoers,无需密码:

    类型:$ sudo visudo

并添加:gammu ALL=(ALL) NOPASSWD: ALL

  • 然后以 root 用户身份运行 gammu-smsd:
  • /etc/init.d/gammu-smsd

    USER=gammu更改为USER=root

    保存并不要忘记重新启动守护进程:service gammu-smsd restart

  • RunOnReceive脚本中,在gammu-smsd-inject前面添加sudo:

    例如:sudo gammu-smsd-inject TEXT my_tel_num -text "Hello world!"

  • 我希望这对你也有用!

    P.S.:我使用 Gammu 版本 1.31.90。

    关于linux - gammu-smsd RunOnReceive 脚本结果退出状态 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225682/

    相关文章:

    linux - 在 Linux 桌面环境中为每个应用程序分配键盘快捷方式

    linux - JFFS2 文件系统,存储使用与实际文件大小不一致

    c - gcc -O 是否会对链接的静态库生效?

    linux - 为什么 SIGHUP 在 Alpine Docker 容器中的 busybox sh 上不起作用?

    string - 使用 bash 脚本在日志文件中搜索字符串

    coldfusion - 使用 webhooks 和 Coldfusion 的 Twilio 入站 SMS

    android - 如何将我所有的短信标记为未读?

    linux - 如何编写shell脚本,自动进行文件转换?

    php - 通过 bash 脚本运行 php 脚本时出现 MySQL 数据库连接错误

    android - 启用 gps 后每 30 分钟发送一次位置更新