Gammu - Script para geração de configuração - codinome "gammuninja"
Publicado por Roberto Fettuccia (última atualização em 31/03/2014)
[ Hits: 5.938 ]
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
#!/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
Selecionar wallpaper no Fluxbox (baseado no Xdialog)
Monta Pen-Drive Windows no Linux
Instalador do plugin Flash 64 bits para Linux e UNIX/UNIX-like
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (11)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









