You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

55 lines
1.3 KiB

#!/usr/bin/env sh
LOGDIR="$XDG_DATA_HOME"/sxmo/modem
info() {
echo "$1" > /dev/stderr
}
err() {
info "$1"
exit 1
}
usage() {
err "Usage: $(basename "$0") number [-|message]"
}
modem_n() {
MODEMS="$(mmcli -L)"
echo "$MODEMS" | grep -qoE 'Modem\/([0-9]+)' || err "Couldn't find modem - is your modem enabled?"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
}
MODEM="$(modem_n)"
[ 0 -eq $# ] && usage
NUMBER="$1"
if [ "-" = "$2" ]; then
TEXT="$(cat)"
else
shift
[ 0 -eq $# ] && usage
TEXT="$*"
fi
TEXTSIZE="${#TEXT}"
#mmcli doesn't appear to be able to interpret a proper escape
#mechanism, so we'll substitute double quotes for two single quotes
SAFE_TEXT=$(echo "$TEXT" | sed "s/\"/''/g")
SMSNO="$(
mmcli -m "$MODEM" --messaging-create-sms="text=\"$SAFE_TEXT\",number=$NUMBER" |
grep -o "[0-9]*$"
)"
mmcli -s "${SMSNO}" --send || err "Couldn't send text message"
for i in $(mmcli -m "$MODEM" --messaging-list-sms | grep " (sent)" | cut -f5 -d' ') ; do
mmcli -m "$MODEM" --messaging-delete-sms="$i"
done
TIME="$(date --iso-8601=seconds)"
mkdir -p "$LOGDIR/$NUMBER"
printf %b "Sent to $NUMBER at $TIME:\n$TEXT\n\n" >> "$LOGDIR/$NUMBER/sms.txt"
printf %b "$TIME\tsent_txt\t$NUMBER\t$TEXTSIZE chars\n" >> "$LOGDIR/modemlog.tsv"
info "Sent text message ok"