2016-05-25 10 views
0

私はRapsberryをSMS Ping Pong Playerとして設定したいと思います。だから私は監務-SMSDをインストールし、次のように監務-smsdrcを設定した:Gammu runonreceiveは変数を渡しません

# Configuration file for Gammu SMS Daemon 

# Gammu library configuration, see gammurc(5) 
[gammu] 
# Please configure this! 
port = /dev/ttyUSB3 
pin= 4135 
connection = at 
# Debugging 
logformat = textall 

# SMSD configuration, see gammu-smsdrc(5) 
[smsd] 
RunOnReceive = sudo /var/spool/gammu/receivesms.sh 
service = files 
pin = 4135 
# Increase for debugging information 
debuglevel = 1 
logfile = /var/spool/gammu/gammu.log 
include_smsc = 491722270333 

# Paths where messages are stored 
inboxpath = /var/spool/gammu/inbox/ 
outboxpath = /var/spool/gammu/outbox/ 
sentsmspath = /var/spool/gammu/sent/ 
errorsmspath = /var/spool/gammu/error/ 

をこれまでのところ、受信SMSが正常に動作し、SMSを送信します!

私はその走り回ったことを試しました。 smsの送信者番号とテキストを取得する必要がある小さなスクリプトを書いた。テキストが「ping」の場合、gammu-smsdはポンを送信者に送り返す必要があります。

reveivessms.sh:

#!/bin/sh 
from=$SMS_1_NUMBER 
message=$SMS_1_TEXT 
reply="" 

if test "$message" = "Ping"; then 
    reply="Pong!" 
else 
    reply="Y U NO PLAY PING PONG?" 
fi 


sudo echo "$reply" | /usr/bin/gammu-smsd-inject -c /etc/gammu-smsdrc TEXT "$from" 

gammu.logは次のとおりです。

Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Received message from: +49160xxxxx 
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Read 1 messages 
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Received IN20160525_090429_00_+49160xxxxxx_00.txt 
Wed 2016/05/25 09:04:31 gammu-smsd[21994]: Starting run on receive: sudo /var/spool/gammu/receivesms.sh IN20160525_090429_00_+49160xxxxxx_00.txt 
Wed 2016/05/25 09:04:31 gammu-smsd[21681]: Process finished successfully 
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: Found 1 sms to "" with text "Y U NO PLAY PING PONG?" cod 3 lgt 22 udh: t 1 l 0 dlr: -1 fls: -1 
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: New message to send: OUTC20160525_090431_00__sms0.smsbackup 
Wed 2016/05/25 09:04:53 gammu-smsd[21681]: Message without SMSC, assuming you want to use the one from phone 
Wed 2016/05/25 09:05:19 gammu-smsd[21681]: SMS sent on device: "/dev/ttyUSB3" status=500, reference=-1 
Wed 2016/05/25 09:05:19 gammu-smsd[21681]: Error getting send status of message: Unknown error. (UNKNOWN[27]) 

うーん何のメッセージは答えていない...

をので、私は、パラメータを渡さずに試してみましたreceivesms.shを変更しました〜へ:

となり、すべて動作しています。レシピms.shに渡される変数は機能しないと考えられます。しかし、なぜ私は考えていない?

+1

なぜあなたはrunonreceiveでsudoを使用していますか?ほとんどの場合、すべての環境変数をフィルタリングしています.... –

+0

hmm ... sudoを終了したとき、次のログエラーが表示されます:Wed 2016/05/25 21:19:09 gammu-smsd [1942]:Starting実行時に実行:/var/spool/gammu/receivesms.sh IN20160525_211905_00_ + 49160xxxxxx_00.txt Wed 2016/05/25 21:19:09 gammu-smsd [1896]:プロセスが終了ステータス139で失敗しました – swapfile

+0

また、権限をチェックしました。 gammuサービスはrootとして実行されます:root 1896 0.1 0.4 26364 4304? Ss 21:18 0:00/usr/bin/gammu-smsd - デーモン - ユーザールート--pid /var/run/gammu-smsd.pidおよびreceivedms.shは-rwxrwxrwxです。1 root root 401 5月25 09: 26 recems.sh – swapfile

答えて

1

、環境変数を保つ参照するには、root、変更sudoの設定としてSMSDを実行していることを主張した場合は、監務-SMSD-注入して、SMS応答を送信するために受ける上で実行取得するの使命でした。

この問題を抱えている人は、私はgammu-smsd-injectコマンドのstdoutとstderrを/ dev/nullにリダイレクトして解決しました。

echo "This somehow works" | gammu-smsd-inject TEXT $from > /dev/null 2>&1 

よろしく

1

問題は、sudoはデフォルト設定で環境変数を保持しないため、スクリプトでsudoを使用しないことをお勧めします。ルートとしてのSMSDの実行は、SMSデコードに何らかのエラーが発生した場合でも、ルートとして直接実行されるため、潜在的なセキュリティ上のリスクになります。

SMSDをユーザーとして実行し、/ var/spool/gammuとモデム/電話デバイスの権限を適切に変更する方がよいです。

あなたはHow to keep Environment Variables when Using SUDO

関連する問題