Gammu - Script para geração de configuração - codinome "gammuninja"
Publicado por Roberto Fettuccia (última atualização em 31/03/2014)
[ Hits: 5.660 ]
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
Advix - controle de processos judiciais para advogados
Verificar IP Externo no Linux.
Script para instalação de um servidor web
Wrapper do dd com algumas medidas de segurança
Nenhum comentário foi encontrado.
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Não consigo instalar o WineHQ no meu notebook vaio FE15 (Debian) (7)