Gammu runonreceive не передает переменные

Я хочу настроить мой Rapsberry в качестве игрока SMS-пинг-понга. Поэтому я установил gammu-smsd и настроил gammu-smsdrc следующим образом:

# 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/

пока что отправка смс, получение смс работает нормально!

Так что я попробовал эту вещь. и написал небольшой скрипт, который должен получить номер отправителя смс и текст. и если текст "ping", gammu-smsd должен отправить pong обратно отправителю.

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])

хм нет сообщений ответили...

поэтому я попытался без передачи параметров и изменил receivems.sh на:

#!/bin/sh
sudo echo Gude Wie | /usr/bin/gammu-smsd-inject -c /etc/gammu-smsdrc TEXT 49160xxxx

и все работает. Кажется, что переменная, передаваемая в receicesms.sh, не работает. Но я понятия не имею, почему?

2 ответа

Решение

Запуск по приему для отправки смс-ответа с gammu-smsd-inject был миссией.

Для всех, кто сталкивался с этой проблемой. Я решил это, перенаправив stdout и stderr команды gammu-smsd-inject в /dev/null.

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

С уважением

Проблема в том, что sudo не сохраняет переменные среды в конфигурации по умолчанию, поэтому я советую вам не использовать sudo в скрипте. Запуск SMSD с правами root также представляет потенциальную угрозу безопасности, так как в случае какой-либо ошибки при декодировании SMS злоумышленник напрямую запускается с правами root.

Так что лучше запустить SMSD от имени пользователя и соответственно изменить права доступа для / var / spool / gammu и модема / телефона.

Если вы настаиваете на запуске SMSD от имени пользователя root, измените конфигурацию sudo, чтобы сохранить переменные среды, см. Раздел Как сохранить переменные среды при использовании SUDO

Другие вопросы по тегам