detoniks
(usa Debian)
Enviado em 26/02/2013 - 11:03h
Eu executo um comendo que gera resultados do tipo:
SIP/7960-00000095 macro-dial s 7 Up Dial Local/FMPR-7967@from-inte 7960 00:26:56 SIP/7967-00000096
LOCAL/8888-00000095 macro-dial s 7 Up Dial Local/FMPR-7967@from-inte 7960 00:26:56 SIP/7877-00000096
IAX2/4360-00000095 macro-dial s 7 Up Dial Local/FMPR-7967@from-inte 7960 00:26:56 SIP/4367-00000096
E assim varias linhas, para tratar isso eu fiz o script que substitui espaços por ';', e estou cortando sempre as 3 primeiras letras da linha, pegando assim o valor no exemplo linha1- SIP , linha2-LOC, linha3=IAX2
Acontece que soh me interessam as linhas que comecem com SIP, ai fiz um IF que verifica se as 3 primeiras letras eh SIP, se for, eu mantenho a linha, se não for, eu pulo a linha. Ficou assim:
for i in $(sudo asterisk -rx 'core show channels verbose' | grep -v Channel | grep -v active | grep -v calls | grep -Eiv "Outgoing" |tr -s " " ";" | sed 's/[()]//g'); do
#for i in $(cat core.txt | grep -v Channel | grep -v active | grep -v calls | tr -s " " ";" | sed 's/[()]//g'); do
RAMAL=$(echo ${i} | cut -f2 -d"/" | cut -d"-" -f1)
CANAL=$(echo ${i} | cut -d";" -f1)
DURACAO=$(echo ${i} | rev | cut -f3 -d";" | rev)
BRIDGED=$(echo ${i} | rev | cut -f2 -d";" | rev)
LINHA=$(echo ${i})
SIP=$(echo ${i} | cut -c 1-3)
if [ $SIP != "SIP" ];then
i=$((i++))
fi
#echo $SIP
echo -------------------------------------------------------------------------------
echo $LINHA
echo RAMAL = $RAMAL
echo "INSERT INTO PEERS (CHANNELS, DUCRACAO, BRIDGED) VALUES ($CANAL, $DURACAO, $BRIDGED);"
done
porem o i++ não esta funcionando. Entendeu?