251 (edytowany przez armen10 2026-07-30 15:12:33)

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Cezary napisał/a:

Na początku skryptu masz napisane że skonfigurowanego mutt'a potrzebujesz.

Sorry baran ze mnie i kawka już lecie...

Ale wiadomości dalej nie ma...

Serwer wysyłający działa poniższa wiadomość testowa przyszła.

echo "Test" | mutt -s "Test" -- test@test.pl

https://i.ibb.co/wh4ThDqC/01.png

252

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Skrypt zostawia w /root/scripts/sms2email.processed dane żeby mógł być przeprocesowany. Nie woła mutta bezpośrednio. Więc musisz mutta uruchomić żeby to przetworzył.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

253

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Cezary napisał/a:

Skrypt zostawia w /root/scripts/sms2email.processed dane żeby mógł być przeprocesowany. Nie woła mutta bezpośrednio. Więc musisz mutta uruchomić żeby to przetworzył.

Uruchomiłem sam skrypt i w katalogu  /root/scripts/ pusto... nie ma pliku sms2email.processed

254

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Zainstalowałeś basha?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

255

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Cezary napisał/a:

Zainstalowałeś basha?

root@OpenWrt:~/scripts# bash sms2email.sh
Script started
sms2email finished

ale mail nie dochodzi i brak pliku  sms2email.processed

256

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

bash -x sms2email.sh

skrypt usuwa smsy, więc może już nie ma co wysłać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

257

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Cezary napisał/a:

bash -x sms2email.sh

skrypt usuwa smsy, więc może już nie ma co wysłać.

A czy jest różnica co mam zaznaczone:

SIM card
Modem memory

258

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

To jest miejsce gdzie są smsy przechowywane. Ustaw na to gdzie je masz jak przychodzą.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

259 (edytowany przez armen10 2026-07-30 15:50:57)

Odp: Luci-app-sms-tool(-js) [ proste gui dla sms_tool ]

Mam taki log:
Plik sms2email.processed też się nie pojawia, nie wiem czy czasem skrypt nie ma błędu... Niby AI mówi, że są błędy w skrypcie...

root@OpenWrt:~/scripts# bash -x sms2email2.sh
+ MODEM_DEV=/dev/ttyACM0
+ FILE_PROCESSED=/root/scripts/sms2email.processed
+ EMAIL_RECIPIENT=test@test.pl
+ SMS_LIMIT=20
+ LOCK_FILE=/var/lock/sms2email.lock
+ exec
+ flock -n 200
+ trap 'flock -u 200; rm -f '\''/var/lock/sms2email.lock'\''' EXIT
+ log 'Script started'
+ msg='Script started'
+ echo 'Script started'
Script started
+ logger -p info -t sms2email.sh 'Script started'
+ sms_tool -d /dev/ttyACM0 recv
+ current_msg=
+ sender=
+ msg_index=
+ msg_found=0
+ counter=0
+ sms_list=
+ sms_tool -d /dev/ttyACM0 recv
+ IFS=
+ read -r line
+ + grep -q '^MSG:'
echo 'MSG: 1'
+ '[' 0 -eq 1 ']'
++ ++ echo 'MSG: 1'
cut '-d ' -f2
+ msg_index=1
+ current_msg='MSG: 1'
+ msg_found=1
+ IFS=
+ read -r line
+ + echo 'From: 48111222333'
grep -q '^MSG:'
+ + grep -q '^From:'
echo 'From: 48111222333'
++ ++ echo 'From: 48111222333'
cut '-d ' -f2-
+ sender=48111222333
+ current_msg=$'MSG: 1\n\nFrom: 48111222333'
+ IFS=
+ read -r line
+ + echo 'Date/Time: 07/30/26 15:40:07'
grep -q '^MSG:'
+ + grep -q '^From:'
echo 'Date/Time: 07/30/26 15:40:07'
+ + echo 'Date/Time: 07/30/26 15:40:07'
grep -q '^Date/Time:'
+ current_msg=$'MSG: 1\n\nFrom: 48111222333\nDate/Time: 07/30/26 15:40:07'
+ IFS=
+ read -r line
+ + echo 'Część to ja.'
grep -q '^MSG:'
+ + grep -q '^From:'
echo 'Część to ja.'
+ echo 'Część to ja.'
+ grep -q '^Date/Time:'
+ '[' 1 -eq 1 ']'
+ '[' -n 'Część to ja.' ']'
+ current_msg=$'MSG: 1\n\nFrom: 48111222333\nDate/Time: 07/30/26 15:40:07\nCzęść to ja.'
+ IFS=
+ read -r line
+ + echo ''
grep -q '^MSG:'
+ + grep -q '^From:'
echo ''
+ + grep -q '^Date/Time:'
echo ''
+ '[' 1 -eq 1 ']'
+ '[' -n '' ']'
+ IFS=
+ read -r line
+ '[' 0 -eq 1 ']'
+ '[' 0 -gt 20 ']'
+ log 'sms2email finished'
+ msg='sms2email finished'
+ echo 'sms2email finished'
sms2email finished
+ logger -p info -t sms2email.sh 'sms2email finished'
+ flock -u 200
+ rm -f /var/lock/sms2email.lock

Jakby ktoś potrzebował poprawiona wersja

#!/bin/sh
MODEM_DEV='/dev/ttyACM0' # Tu właściwy modem
FILE_PROCESSED='/root/scripts/sms2email.processed'
EMAIL_RECIPIENT='test@test.pl' # Tu swój email
SMS_LIMIT=20
LOCK_FILE='/var/lock/sms2email.lock'

log(){
  msg="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') - ${msg}"
  logger -p "info" -t "sms2email.sh" "${msg}"
}

log_error(){
  msg="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') - ERROR: ${msg}" >&2
  logger -p "err" -t "sms2email.sh" "${msg}"
}

# DISABLE CONCURRENT
exec 200>"${LOCK_FILE}"
flock -n 200 || { log "Already running" >&2; exit 1; }
trap "flock -u 200; rm -f '${LOCK_FILE}'" EXIT

log "Script started"

# Sprawdź modem
if ! sms_tool -d "${MODEM_DEV}" recv > /dev/null 2>&1; then
    log_error "No response from modem at ${MODEM_DEV}"
    exit 1
fi

# Utwórz plik .processed jeśli nie istnieje
if [ ! -f "${FILE_PROCESSED}" ]; then
    touch "${FILE_PROCESSED}"
    log "Utworzono plik ${FILE_PROCESSED}"
fi

# Zmienne
sent_count=0
processed_count=0

# Zapisz wszystkie SMS-y do tymczasowego pliku
TMP_SMS="/tmp/sms_list.$$"
sms_tool -d "${MODEM_DEV}" recv > "${TMP_SMS}"

# Przetwarzaj SMS-y z pliku tymczasowego
while IFS= read -r line; do
    if echo "$line" | grep -q "^MSG:"; then
        # Jeśli mamy już zgromadzoną wiadomość, wyślij ją
        if [ -n "$current_msg" ] && [ -n "$sender" ] && [ -n "$msg_index" ]; then
            # Sprawdź czy już był przetworzony
            if grep -q "^${msg_index}\$" "${FILE_PROCESSED}" 2>/dev/null; then
                log "SMS nr ${msg_index} już był przetworzony - pomijam"
            else
                # Wyślij email
                log "Wysyłam SMS nr ${msg_index} od ${sender}"
                echo "${current_msg}" | mutt -s "SMS od: ${sender}" -- "${EMAIL_RECIPIENT}"

                if [ $? -eq 0 ]; then
                    log "SUKCES: SMS nr ${msg_index} wysłany na ${EMAIL_RECIPIENT}"
                    echo "${msg_index}" >> "${FILE_PROCESSED}"
                    sent_count=$((sent_count + 1))

                    # USUŃ SMS Z MODEMU (opcjonalnie - odkomentuj jeśli chcesz)
                    # sms_tool -d "${MODEM_DEV}" delete "${msg_index}"
                    # log "SMS nr ${msg_index} usunięty z modemu"
                else
                    log_error "FAIL: Nie udało się wysłać SMS nr ${msg_index}"
                fi
            fi
            processed_count=$((processed_count + 1))

            # Resetuj zmienne dla następnej wiadomości
            current_msg=""
            sender=""
            msg_index=""
        fi

        # Rozpocznij nową wiadomość
        msg_index=$(echo "$line" | cut -d' ' -f2)
        current_msg="$line"
        sender=""

    elif echo "$line" | grep -q "^From:"; then
        sender=$(echo "$line" | cut -d' ' -f2-)
        current_msg="${current_msg}
${line}"

    elif echo "$line" | grep -q "^Date/Time:"; then
        current_msg="${current_msg}
${line}"

    elif [ -n "$line" ] && [ -n "$current_msg" ]; then
        # To jest treść SMS-a
        current_msg="${current_msg}
${line}"
    fi
done < "${TMP_SMS}"

# Wyślij ostatnią wiadomość jeśli istnieje
if [ -n "$current_msg" ] && [ -n "$sender" ] && [ -n "$msg_index" ]; then
    if grep -q "^${msg_index}\$" "${FILE_PROCESSED}" 2>/dev/null; then
        log "SMS nr ${msg_index} już był przetworzony - pomijam"
    else
        log "Wysyłam ostatni SMS nr ${msg_index} od ${sender}"
        echo "${current_msg}" | mutt -s "SMS od: ${sender}" -- "${EMAIL_RECIPIENT}"

        if [ $? -eq 0 ]; then
            log "SUKCES: Ostatni SMS nr ${msg_index} wysłany na ${EMAIL_RECIPIENT}"
            echo "${msg_index}" >> "${FILE_PROCESSED}"
            sent_count=$((sent_count + 1))

            # USUŃ SMS Z MODEMU (opcjonalnie - odkomentuj jeśli chcesz)
            # sms_tool -d "${MODEM_DEV}" delete "${msg_index}"
            # log "SMS nr ${msg_index} usunięty z modemu"
        else
            log_error "FAIL: Nie udało się wysłać ostatniego SMS nr ${msg_index}"
        fi
    fi
    processed_count=$((processed_count + 1))
fi

# Usuń plik tymczasowy
rm -f "${TMP_SMS}"

log "========== PODSUMOWANIE =========="
log "Przetworzono: ${processed_count} SMS-ów"
log "Wysłano: ${sent_count} nowych SMS-ów"
log "sms2email finished"