Gammu - Script para geração de configuração - codinome "gammuninja"

Publicado por Roberto Fettuccia (última atualização em 31/03/2014)

[ Hits: 5.646 ]

Download gammuninja-scan_1.3.sh




Prezados colegas, é com prazer que venho publicar este script, que vem por apresentar uma solução para o arquivo de configuração do Gammu, o trabalho dele é testar porta a porta, procurando por configuração válidas.
Ou seja, ele testa em /dev/* os dispositivos possíveis, gerando automaticamente um arquivo de configuração para [cada] modem GSM...

No meu caso, testei quatro modems GSM USB de marcas diferentes e portas "dev" diferentes, ele gerou os mesmos quatro arquivos de configuração, com um adicional: ele concatena no arquivo o IMEI do modem.

Interessante não?

Aqui no trabalho temos um sistema que está em parceria com o pfSense, ele tem um DB com os vouchers, o usuário solicita o voucher pela página do sistema, aí o sistema pega o voucher/nome, registra no banco e dispara o SMS com o voucher para o usuário...

O problema...

O Gammu tem problemas no quesito agilidade, ou seja, cada SMS demorou cerca de 8 segundos, se for solicitado 1000 vouchers, aí a demora... 8x1000 = 8000 segundos, o que equivale a pouco mais de 1 hora. Em se tratando de agilidade, nesse caso em um modem é muito tempo!

Solução: cada SMS é enviado por um modem, que não esteja ocupado, assim a fila de envio é agilizada...

Testado em Debian 7.

Obs.: esse script utiliza o bash 4.2.37, não foi testado em versões anteriores...
Dúvidas: Skype - rfettuccia

  



Esconder código-fonte

#!/bin/bash
#############################
#   Gammu Ninja 1.3
#   Developer: Roberto Fettuccia
#   script modem scanning
#   Date : 28/03/2014
#   Tested to Bash 4.2.37
#############################
#   Dependences :
#       * gammu 1.31.90
#
#############################
set -x
unset varDEVSvtr[@]
unset varIMEIvtr[@]
sucesso=0
varModemCont=0
X=0

rootDir=/etc/gammuninja
rootTempDir=/tmp/gammuninja

if [[ ! -f ${rootDir} ]]; then
    mkdir ${rootDir}
    printf "${rootDir} criado.\n"
fi
if [[ ! -f ${rootTempDir} ]]; then
    mkdir ${rootTempDir}
    printf "${rootTempDir} criado.\n"
fi

rm -f ${rootTempDir}/*.conf
rm -f ${rootTempDir}/*.tmp
rm -f ${rootDir}/*.conf

detect0="$( ls /dev/tty* | grep '[<[t][t][y]]*[<[^UAS0]*[0-9SC]*[BM*]]*[0-9$]')"
detect1="$( ls /dev/tty* | grep '[<[t][t][y]]*[S][0-9$]')"

varDEVSvtr=(${detect0} ${detect1})

gammuD='
model = at
connection = at
synchronizetime = yes
logfile =
logformat =
use_locking =
gammuloc =
'

DEVX="${varDEVSvtr[${X}]}"
echo "Gerando padrao...."
while [[ ! "${DEVX}" = "" ]];
do # gera todos os confs temporarios
    printf "[gammu]\n" > ${rootTempDir}/gammu$((X)).conf
    printf "port = ${DEVX}" >> ${rootTempDir}/gammu$((X)).conf
    printf "${gammuD}" >> ${rootTempDir}/gammu$((X)).conf
    X=$((X+1))
    DEVX="${varDEVSvtr[${X}]}"
done


X=0
device='true'
while [[ ${device} = 'true' ]];
do # testa todos confs, se gerou imei E modem, entao escreve o conf
    if [ -f  ${rootTempDir}/gammu${X}.conf ]; then
        IMEI_cur="$(gammu -c ${rootTempDir}/gammu${X}.conf identify| grep IMEI | cut -d':' -f2 | sed 's/ //g')"
        if [[ ! "${IMEI_cur}" = "" ]] && [[ ! ${varIMEIvtr[@]} == *"${IMEI_cur}"* ]]; then
            mv ${rootTempDir}/gammu${X}.conf ${rootDir}/gammu${varModemCont}.conf
            varIMEIvtr[${X}]="${IMEI_cur}"
            printf "\n#IMEI:${IMEI_cur}" >> ${rootDir}/gammu${varModemCont}.conf
            varModemCont=$((varModemCont+1))
            sucesso=1
        fi
    else
        device='false'
    fi
    X=$((X+1))
done
rm ${rootTempDir} -Rf

Scripts recomendados

Ler partição NTFS

Calendario

Backup Remoto com rsync, automatico, para varias maquinas, sem senha.

sysinfo

Iptables com Roteando via NAT


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts