Skip to content

Instantly share code, notes, and snippets.

@0x3333
Created July 22, 2019 17:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 0x3333/e7e63cc4ffb240ed58d577270787170a to your computer and use it in GitHub Desktop.
Save 0x3333/e7e63cc4ffb240ed58d577270787170a to your computer and use it in GitHub Desktop.
Pega o saldo da conta SIP Trunk da DirectCall

Para contas tipo SIP Trunk da DirectCall, não existe API(Existe mas é paga) para pegar o saldo atual da conta.

Criei este script para facilitar o acompanhamento do saldo, sem precisar entrar na interface web.

O script retorna 0 caso seja invocado sem argumentos ou caso o argumento seja maior que o saldo atual. Exemplo:

$ ./saldo.sh
312,64
$ echo $?
0

$ ./saldo.sh 300
312,64
$ echo $?
0

$ ./saldo.sh 320
312,64
$ echo $?
1

Pode-se adicionar ao crontab para enviar emails ao root em caso de saldo baixo

0 8-18/2 * * 1-5 root /usr/local/bin/saldo.sh 300 > /dev/null

Desta forma, das 8hs até as 18hs de segunda a sexta a cada 2 horas, ele irá verificar se o saldo é menor que 300, se for, o cron irá enviar um email para o root contendo o saldo atual.

#!/bin/bash
LIMIT=
if [ -n "$1" ]; then
LIMIT=$(echo "$1" | sed -e "s/[^0-9]*//g")
fi
COOKIE_JAR=$(mktemp)
USER="USUARIO"
PASS="SENHA"
trap 'rm "${COOKIE_JAR}"' EXIT
# Pega Cookie
curl 'http://www.directdial.com.br/extratos/index/login' \
--cookie-jar "${COOKIE_JAR}" \
--compressed \
--silent \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' > /dev/null
# Faz Login
curl 'http://www.directdial.com.br/extratos/index/dologin' \
--cookie ${COOKIE_JAR} \
--compressed \
--silent \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data "usuario=${USER}&senha=${PASS}"
# Pega Saldo
BODY="$(curl 'http://www.directdial.com.br/extratos/index/post' \
--cookie ${COOKIE_JAR} \
--compressed \
--silent \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
--data "ordem=DESC&listarPor=usuario&dataInicial=01%2F$(date +%m)%2F$(date +%Y)&dataFinal=01%2F$(date +%m)%2F$(date +%Y)" | LC_ALL=C tr '[\r\n]' ' ')"
SALDO=$(echo $BODY | LC_ALL=C sed -e 's/.*Saldo atual:[^0-9]*\([0-9]*,[0-9]*\).*/\1/')
if [ $(echo -n "${SALDO}" | wc -c) -gt 10 ]; then
echo "Falha ao pesquisar saldo na resposta!" >&2
exit 2
fi
if [ -z "$LIMIT" ] || [ 0$(echo ${SALDO} | sed -e "s/,.*//") -gt $LIMIT ]; then
echo -n "${SALDO}"
exit 0
else
echo -n "${SALDO}" >&2
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment