Gammu - Script para geração de configuração - codinome "gammuninja"
Publicado por Roberto Fettuccia (última atualização em 31/03/2014)
[ Hits: 5.805 ]
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
Retirar o link do download de páginas protetoras
Verifica os artigos destaques da VOL
Script para pegar ip WAN para firewall com uma ou mais links de internet
Nenhum coment�rio foi encontrado.
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Direcionar uma URL para Outra No Mikrotik (0)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (1)