Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

13. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 26/04/2012 - 14:49h

Cara ainda nao consegui sera que nao tem como fazer como nosso amigo foxbit3r fez ai? tem algum exemplo?


  


14. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 26/04/2012 - 17:01h

juniorxt escreveu:

Cara ainda nao consegui sera que nao tem como fazer como nosso amigo foxbit3r fez ai? tem algum exemplo?


Veja que ele gera cada arquivo igual você pediu lá no início e coloca 2 campos dentro que está sendo enviado via parâmetro.
A partir de agora voce poderá adicionar o que quiser na matriz. Basta passar via parâmetro na função e ajustar.
Gera 1 arquivo de cada xml como você pediu. Gera EXATAMENTE no formato que você pediu rsrs.,

Existem muitas formas de fazer. O legal é que este caso vai ficar de exemplo.
Espero que agora consiga resolver sua pendência, ;)


[code]
#!/bin/bash
# Script.......: matriz_scriptbackup.sh
# name.........: Gera arquivo texto com matriz de xmal
# Author.......: @juniorxt
# Co-Authores..: Geraldo T. Albuquerque aka @AprendiNoLinux
# Employees....: @.ronin , @fdmarp ,
# charset......: UTF-8
# endofline....: Linux
# since........: 2012-04-26 15:13 (GMT -03:00)
# license......: GPL 3
# system.......: GNU bash, version 3.x
# version......: alfa 0.1
# more.........: Para disparar depois os arquivos é só fazer um while.

function mx_cpfcelular()
{

# Estou passando 3 parâmetros para a função/matriz.
# param1 = 1º campo do arquivo de teste.
# param2 = 2º campo do arquivo de teste.
# param3 = Nome de arquivo com prefixo + nanosegundos.
local lc_cpf="$1" lc_fone="$2" lc_arq_saida="$3"
local m_1 m_2 m_3 m_4 m_5 m_6 m_7 m_8 m_9 m_10
local m_11 m_12 m_13 m_14 m_15 m_16 m_17 m_18 m_19 m_20
local m_21 m_22 m_23 m_24 m_25 m_26 m_27 m_28 m_29 m_30


m_1='ENDPOINT="http://www.site.com/site.asmx?"'
m_2='if [ "$1" = "xxx.xxx.xxx" ]; then'
m_3=' echo "IP"'
m_4=' exit 0'
m_5='fi'
m_6=' '
m_7='curl --silent \'
m_8='--data \'
m_9='@- \'
m_10='--header ''Content-Type: application/soap+xml; charset=utf-8'' \ --user-agent "" \'
m_11='${ENDPOINT} <<EOF | xmllint --format -'
m_12='<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">'
m_13='<soap:Header>'
m_14='<soap:Body>'
m_15='<v1:envia>'
m_16='<v1:cpf>'$lc_cpf'</v1:cpf>'
m_17='<v1:telefone>'$lc_fone'</v1:telefone>'
m_18='<v1:fecha>teste</v1:fecha>'
m_19='<v1:fecha2>teste</v1:fecha2>'
m_20='</v1:envia>'
m_21='</soap:Body>'
m_22='</soap:Envelope>'
m_23='EOF'
m_24='EXIT 99;'

echo "${m_1}" > $lc_arq_saida
echo "${m_2}" >> ${lc_arq_saida}
echo "${m_3}" >> ${lc_arq_saida}
echo "${m_4}" >> ${lc_arq_saida}
echo "${m_5}" >> ${lc_arq_saida}
echo "${m_6}" >> ${lc_arq_saida}
echo "${m_7}" >> ${lc_arq_saida}
echo "${m_8}" >> ${lc_arq_saida}
echo "${m_9}" >> ${lc_arq_saida}
echo "${m_10}" >> ${lc_arq_saida}
echo "${m_11}" >> $lc_arq_saida
echo "${m_12}" >> ${lc_arq_saida}
echo "${m_13}" >> ${lc_arq_saida}
echo "${m_14}" >> ${lc_arq_saida}
echo "${m_15}" >> ${lc_arq_saida}
echo "${m_16}" >> ${lc_arq_saida}
echo "${m_17}" >> ${lc_arq_saida}
echo "${m_18}" >> ${lc_arq_saida}
echo "${m_19}" >> ${lc_arq_saida}
echo "${m_20}" >> ${lc_arq_saida}
echo "${m_21}" >> $lc_arq_saida
echo "${m_22}" >> ${lc_arq_saida}
echo "${m_23}" >> ${lc_arq_saida}
echo "${m_24}" >> ${lc_arq_saida}

}
# Fim da função.
# Chamei o arquivo de testes como: cpfcelular.txt
# Conteúdo segue abaixo:
#01128648749 01174922047
#02733297940 02799047042
#01332840811 01388458409
#01145343578 01168425878
#02133944108 02197343445

lc_linha=
# Os arquivos irão para o diretório tmp no raiz.
local_destino="/tmp"
# No while vai correr todas as linhas do cpfcelular.txt
while read lc_linha ; do
lc_campo1=$(echo "$lc_linha" | cut -f1 -d" ")
lc_campo2=$(echo "$lc_linha" | cut -f2 -d" ")
Arq_Sai="${local_destino}/matriz_xml_$(date +%N).txt"
mx_cpfcelular "${lc_campo1}" "${lc_campo2}" "${Arq_Sai}"
done < cpfcelular.txt

exit

[/quote]





15. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 26/04/2012 - 20:17h

agora sim amigo, puxa vida não sendo chato rsrs e seu quiser que saia tudo dentro de um unico arquivo? por exemplo estes 3 arquivos que vão gerar neste codigo, saisem tudo dentro de um unico?


16. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 26/04/2012 - 21:06h

juniorxt escreveu:

agora sim amigo, puxa vida não sendo chato rsrs e seu quiser que saia tudo dentro de um unico arquivo? por exemplo estes 3 arquivos que vão gerar neste codigo, saisem tudo dentro de um unico?


Sem grilo, mais fácil ainda rrs.
Veja aqui:

while read lc_linha ; do
lc_campo1=$(echo "$lc_linha" | cut -f1 -d" ")
lc_campo2=$(echo "$lc_linha" | cut -f2 -d" ")
Arq_Sai="${local_destino}/matriz_xml_$(date +%N).txt"
mx_cpfcelular "${lc_campo1}" "${lc_campo2}" "${Arq_Sai}"
done < cpfcelular.txt
[/quote]

retire de dentro do while a linha: [code] Arq_Sai="${local_destino}/matriz_xml_$(date +%N).txt"

e coloque-a antes do danado. Deve ficar assim.


Arq_Sai="${local_destino}/matriz_xml_$(date +%N).txt"

while read lc_linha ; do
lc_campo1=$(echo "$lc_linha" | cut -f1 -d" ")
lc_campo2=$(echo "$lc_linha" | cut -f2 -d" ")
mx_cpfcelular "${lc_campo1}" "${lc_campo2}" "${Arq_Sai}"
done < cpfcelular.txt

[/quote]

Como o arquivo é gerado aleatoriamente com base em nanosegundos e a variável ficando fora do while, o nome nunca muda.
Desta forma, quando a função for chamada, sempre vai ter o mesmo valor e tudo vai cair em um único arquivo.

A linha que chama a função:
[code]

mx_cpfcelular "${lc_campo1}" "${lc_campo2}" "${Arq_Sai}"



FALHA MINHA: Tem que alterar esta linha também: echo "${m_1}" > $lc_arq_saida

Coloque assim: "${m_1}" >> $lc_arq_saida

Antes a lógica forçava o 1º item regravar o arquivo inteiro, mas agora como ele vai juntar, precisa desta alteração.

Belê ?

Prova do crime:

ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi

curl --silent \
--data \
@- \
--header Content-Type: application/soap+xml; charset=utf-8 \ --user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header>
<soap:Body>
<v1:envia>
<v1:cpf>01128648749</v1:cpf>
<v1:telefone>01174922047</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;
ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi

curl --silent \
--data \
@- \
--header Content-Type: application/soap+xml; charset=utf-8 \ --user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header>
<soap:Body>
<v1:envia>
<v1:cpf>02733297940</v1:cpf>
<v1:telefone>02799047042</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;
ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi

curl --silent \
--data \
@- \
--header Content-Type: application/soap+xml; charset=utf-8 \ --user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header>
<soap:Body>
<v1:envia>
<v1:cpf>01332840811</v1:cpf>
<v1:telefone>01388458409</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;
ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi

curl --silent \
--data \
@- \
--header Content-Type: application/soap+xml; charset=utf-8 \ --user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header>
<soap:Body>
<v1:envia>
<v1:cpf>01145343578</v1:cpf>
<v1:telefone>01168425878</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;
ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi

curl --silent \
--data \
@- \
--header Content-Type: application/soap+xml; charset=utf-8 \ --user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header>
<soap:Body>
<v1:envia>
<v1:cpf>02133944108</v1:cpf>
<v1:telefone>02197343445</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;




17. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 26/04/2012 - 21:38h

Amigo muito obrigado, deu certinho agora vou fazer todos os testes aqui, obrigado mesmo cara


18. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 26/04/2012 - 22:04h

juniorxt escreveu:

Amigo muito obrigado, deu certinho agora vou fazer todos os testes aqui, obrigado mesmo cara


Após término dos testes e tudo correr bem, não esqueça de dar baixa no tópico. ;)






01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts