shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Enviando resultados de um arquivo para uma API.


From: Filipi Souza
Subject: Re: [shell-script-pt] Enviando resultados de um arquivo para uma API.
Date: Wed, 21 Oct 2020 19:05:23 -0300

Boa noite George.

Se você vai trabalhar com o JSON, utilize o jq para este trabalho.

Segue um exemplo, para pegar a latência:

Para ler de um arquivo:
#
jq ."server".latency speed.json

Para ler da entrada padrão através o pipe:
# cat speed.json | jq ."server".latency


Em qua., 21 de out. de 2020 às 18:54, George Robinson <george.robinson.br@gmail.com> escreveu:
Pessoal,

Só mais uma coisa... eu notei que se eu pedir a saída em JSON, eu tenho acesso a mais informações que na saída CSV estão omitidas. Por exemplo:

./speedtest.cli --json , temos o seguinte output

./speedtest-cli --json
{"client": {"rating": "0", "loggedin": "0", "isprating": "3.7", "ispdlavg": "0", "ip": "177.12.43.76", "isp": "Predlink Rede de Telecomuniccoes Ltda", "lon": "-43.1054", "ispulavg": "0", "country": "BR", "lat": "-22.8896"}, "bytes_sent": 83558400, "download": 62041695.373386584, "timestamp": "2020-10-21T21:37:17.054895Z", "share": null, "bytes_received": 77678956, "ping": 17.5, "upload": 66712941.14054087, "server": {"latency": 17.5, "name": "S\u00e3o Paulo", "url": "http://spd5.claro.com.br:8080/speedtest/upload.php", "country": "Brazil", "lon": "-46.6167", "cc": "BR", "host": "spd5.claro.com.br:8080", "sponsor": "Claro Movel SP1", "lat": "-23.5000", "id": "18103", "d": 365.2307647030463}}

E por exemplo, as informações marcadas em amarelo são as seguintes:

IP EXTERNO
PROVEDOR
TAXA DE DOWNLOAD (SEM CONVERSÃO)
TAXA DE UPLOAD (SEM CONVERSÃO)
LATENCIA

percebo que esses resultados são os mais precisos para o que eu estou fazendo. Como eu poderia buscar apenas esses campos nessa linha inteira de saída?

Pensei em uma expressão regular que capturasse qualquer valor após os seguintes nomes,

"ip":
"isp":
"download":
"upload":
"latency":

Seria por aí?

Atenciosamente


Em qua., 21 de out. de 2020 às 17:55, George Robinson <george.robinson.br@gmail.com> escreveu:
Julio,

Eu sou seu fã, comprei seu livros, vejo seus videos, mas realmente, eu passei um bom tempo congelado, e a necessidade me empurrou de volta para o shell. 

Como vc disse acima, não há nenhuma outra linguagem que consiga fazer o que foi feito dessa forma que o Casanova respondeu. É incrível... uma linha resolveu 2 semanas de pesquisas.

O mundo não pode esquecer do shell e nem vai!!!

Em qua., 21 de out. de 2020 às 17:52, Julio C. Neves <julio.neves@gmail.com> escreveu:









Em qua., 21 de out. de 2020 às 17:31, George Robinson <george.robinson.br@gmail.com> escreveu:
Alfredo,

Muitíssimo obrigado!!! 

Shell Script faz tudo...
Eu estava quase mexendo no script python pra ele entregar essa saída pra mim... minha linha ficou assim:


./speedtest-cli --csv >> speedtest.txt (para criar o arquivo a ser lido)

at speedtest.txt | sed '1d' | while IFS=, read serverId Sponsor ServerName Timestamp Distance Ping Download Upload Share IpAddress; do curl -X POST https://meuhost.com.br/api/registra_test? -d "username=$serverId&computername=$serverId&latency=$serverId&resultsurl=$serverId&jitter=$serverId&usedserver=$serverId&externalip=$serverId&isp=$serverId&packetloss=$serverId&download=$serverId&upload=$serverId" ; done

Usei a mesma variável para todas as saídas para testes... e funcionou... agora eu tenho todas as linhas montadas com o mesmo campo... como eu gostaria de fazer!!!

Vocês são os melhores!

Um abraço!!
Vc disse: O Shell script faz tudo... e eu complemento:
E tudo de forma muito simples e concisa. Pela sua pergunta me pareceu que Shell não é muito a sua praia, mas deveria ser pq se vc consultar o histórico dessa lista, verá que mais de 90% da perguntas - sobre os mais variados temas - têm respostas simples e precisas, com no máximo 3 linhas de código, como essa que o Casanova te mandou.

Ele gravou um arquivo sem ao menos dar um open (ou fopen), com um simples cmd read ele leu diversos campos separados por vírgula (mas poderia ser qq separador ou até diversos) para várias variáveis!!! Não conheço nenhuma linguagem que faça isso. Vc conhece?

Me desculpe me meter onde não fui chamado, mas gosto muito dessa linguagem e depois que criaram a interface gráfica ela passou a ser ignorada por todos, pensando que o mouse iria resolver tudo, Mas isso é um engano... o mouse não conhee quase nada, quem conhece é o Shell.

Dou a maior força para vc aprender Shell, ele é muito fácil vai te quebrar diversos galhos e até mesmo troncos... ;) 

Abraços,
Julio


» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.
 

Em qua., 21 de out. de 2020 às 16:02, Alfredo Casanova <atcasanova@gmail.com> escreveu:
basicamente vc vai fazer o seguinte:


speedtest-cli --csv | 
sed '1d' | while IFS=, read serverId Sponsor ServerName Timestamp Distance Ping Download Upload Share IpAddress; do
curl -X POST http://host/ -d "servidor=$serverId&sponsor=$Sponsor&servername=$ServerName..." etc
done

O primeiro pipe, sed '1d', vai pegar a saída do seu script speedtest-cli e deletar a primeira linha, de cabeçalhos. e vai jogar o resultado para um while que lê as variáveis separadas por vírgula direto do stdout. Assim, o basta montar a string que você quer mandar. Depende do que a API de destino pede, se for json vc vai ter que formatar de forma diferente. Mas o esqueleto é esse.

On Wed, Oct 21, 2020 at 3:48 PM George Robinson <george.robinson.br@gmail.com> wrote:
Prezados Gurus do Shell,

Eu estou tentando aproveitar dados de um script de teste de velocidade escrito em python para que eu possa executar testes de forma repetitiva de hora em hora meu computador e enviá-las para uma api e assim guardar o histórico das execuções nela.

Basicamente, o que eu tenho é um script python que faz todo o trabalho, porém, eu gostaria de pegar algumas informaçoes e colocar em um arquivo .txt e assim, enviar para essa uma api.

Pra não criar um e-mail enorme, vou colocar aqui as saída que são permitidas no script feito em python: 

speedtest-cli --csv (resultado bruto, sem conversão, com as seguintes saídas:
Server ID,Sponsor,Server Name,Timestamp,Distance,Ping,Download,Upload,Share,IP Address
36478,Conecta Minas,Mariana,2020-10-21T18:44:07.003643Z,282.5073807220728,25.783,52089821.8528104,62330128.67269893,,177.12.43.76


Dessas informações, eu gostaria apenas de criar um arquivo .txt contendo Server Name, Timestamp, Ping, Download, Upload e com isso, enviar para a minha URL.

Portanto, o que busco é a partir da execução de um script python, utilizar shell script para um método POST em uma API.

Se alguém puder me ajudar, eu agradeceria muito.

--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
[]'s
Alfredo Tristão Casanova .͘.
Linux User #228230
tel: +55 61 9655 9619
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138


--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]