接收并回复huawei modem上的sms,gammu-smsd:进程失败,退出状态为2

时间:2013-10-03 11:15:10

标签: bash unicode sms modem gammu

我在linux xubuntu上安装了华为E220 HSDPA调制解调器 我想收到短信并自动回复发件人。 我用gammu和Gammu-smsd来做这件事。

要自动发送短信,我将runOnRecieve = / path / to / bash / file添加到/ etc / gammu-smsdrc配置文件中。

这是脚本:

#!/bin/bash
str=$SMS_1_TEXT //string containing text from sender
tlf=$SMS_1_NUMBER //containing number from sender
tlf=${tlf:3}


if test "$str" = "today"; then

   echo "[Weather for today in Norway]
   Sol, noe overskyet
   [Vind fra sørøst]
   Ha en fin dag!" | gammu-smsd-inject TEXT $tlf -unicode -autolen 200
else
   echo "fail" >> /home/mattis/sms.txt
fi

这是我启动守护程序的方法

$ sudo gammu-smsd

如果我使用test-input从终端运行bash脚本,但是当程序gammu-smsd调用我得到的脚本时,这是有效的。

gammu-smsd[3183]: Process failed with exit status 2

现在我可以从代码中删除“gammu-smsd-inject”并替换为“gammu sendsms”,但是当收到回到移动设备时,这只会给我乱码而不是“æøå和[]”。

希望获得积极的答案。

1 个答案:

答案 0 :(得分:1)

- / / - 工作代码 - / / -

事情是:Gammu sms注入acctually将数据发送到名为smsd的mysql数据库。

创建此数据库: 这应该按照wammu sql database中的规定创建。存储用于在MySQL数据库中创建表的SQL脚本将能够使用phpmyadmin(gui)或任何其他方式将其导入到mysql接口。

继续收听 添加到/ etc / gammu-smsdrc的末尾 - gammu

的配置文件
runOnRecieve = /path/to/bash/file

打开/ path / to / bash / file

#!/bin/bash
str=$SMS_1_TEXT //codeword "weather"
tlf=$SMS_1_NUMBER //+47 41412424
tlf=${tlf:3} //remove +47

if test "$tlf" = "41412424"; then
    toSend = "[Weather for today in Norway]"
else
    toSend = "[you are not part of this group]"
    echo "Someone outside the group send to this number" > /home/user/activity.txt
fi

mysql --host=localhost --user=username --password=pw smsd << EOF
INSERT INTO outbox (
   DestinationNumber,
   TextDecoded,
   CreatorID,
   RelativeValidity
) VALUES (
   '$tlf',
   '$toSend',
   'Program',
   '255'
);
EOF

启动守护程序

$ sudo gammu-smsd

那应该是它!

额外提示:

  • 使用$ gammu-detect查找设备的连接位置。寻找name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile或类似的东西。将此信息放在配置文件中。
  • 要为bashfile添加正确的权限。让用户可以阅读gammu-smsd。
  • 使用chmod u + x / path / to / bash / file生成bashfile可执行文件。
  • gammu-smsd-monitor可用于检查您的信号有多好。当试图运行时,不要停止运行gammu-smsd。
  • 您可以通过使用dummy tlf和dummytext作为输入运行来测试bashfile。 $ ./bashfile.sh