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

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

[ Hits: 5.511 ]

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

Jogo da Velha

Relatório de suprimentos da empresa

Script para criação de diretorio do usuario no Samba com A.D.

ShadowBurn - grava, copia e apaga CD/DVD

Script em Xdialog para montar/desmontar dispositivos


  

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