Como colocar o variável em instrução curl

1. Como colocar o variável em instrução curl

Romulo Soares de Sousa
romulloares

(usa Ubuntu)

Enviado em 08/05/2021 - 23:11h

Olá, tenho o seguinte case e não consigo sair. Estou criando um script em bash que consulta uma API e retorna um resultado. Esta consulta é um select como este:
SELECT UTF8(payload) FROM events WHERE hasoffense=TRUE AND RULENAME(creeventlist) ILIKE '%nome%' LAST 30 MINUTES", 

E retorna um curl neste formato:
curl -S -X POST -u admin -H 'Version: 15.1' -H 'Accept: application/json' 'https://<ip-Interno>/api/ariel/searches?query_expression=SELECT%20UTF8%28payload%29%20FROM%20events%20WHERE%20hasoffense%3DTRUE%20AND%20RULENAME%28creeventlist%29%20ILIKE%20%27%25nome%25%27%20LAST%2030%20MINUTES%3B' 

O que preciso é de uma maneira de isolar o nome e usar ele para alimentar meu código, hoje estou declarando o curl varias vezes o que não é o melhor dos caminhos.
Alguém poderia dar um help?

Obrigado!






  


2. Re: Como colocar o variável em instrução curl

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2021 - 02:18h

romulloares escreveu:

Olá, tenho o seguinte case e não consigo sair. Estou criando um script em bash que consulta uma API e retorna um resultado. Esta consulta é um select como este:
SELECT UTF8(payload) FROM events WHERE hasoffense=TRUE AND RULENAME(creeventlist) ILIKE '%nome%' LAST 30 MINUTES", 

E retorna um curl neste formato:
curl -S -X POST -u admin -H 'Version: 15.1' -H 'Accept: application/json' 'https://<ip-Interno>/api/ariel/searches?query_expression=SELECT%20UTF8%28payload%29%20FROM%20events%20WHERE%20hasoffense%3DTRUE%20AND%20RULENAME%28creeventlist%29%20ILIKE%20%27%25nome%25%27%20LAST%2030%20MINUTES%3B' 

O que preciso é de uma maneira de isolar o nome e usar ele para alimentar meu código, hoje estou declarando o curl varias vezes o que não é o melhor dos caminhos.
Alguém poderia dar um help?

Obrigado!




romulloares, se a saída sempre tiver o mesmo número de campos, é só pegar com o awk, exemplo:
cat texto.txt
curl -S -X POST -u admin -H 'Version: 15.1' -H 'Accept: application/json' 'https://<ip-Interno>/api/ariel/searches?query_expression=SELECT%20UTF8%28payload%29%20FROM%20events%20WHERE%20hasoffense%3DTRUE%20AND%20RULENAME%28creeventlist%29%20ILIKE%20%27%25nome%25%27%20LAST%2030%20MINUTES%3B' 

var=$(sed 's/%/\\x/g' texto.txt)
awk '{print $22}' <<< "$(printf "$var")"
'%nome%'

Com o sed, troco "%" por "\x", colocando os caracteres em hexa,
tipo %20 para \x20....
printf, "printa" os caracteres, o awk "pega" o campo 22, nome.
awk '{for(n=1;n<=NF;n++)printf "%02d =» %s\n" ,n,$n}' <<< "$(printf "$var")"
01 =» curl
02 =» -S
03 =» -X
04 =» POST
05 =» -u
06 =» admin
07 =» -H
08 =» 'Version:
09 =» 15.1'
10 =» -H
11 =» 'Accept:
12 =» application/json'
13 =» 'https://<ip-Interno>/api/ariel/searches?query_expression=SELECT
14 =» UTF8(payload)
15 =» FROM
16 =» events
17 =» WHERE
18 =» hasoffense=TRUE
19 =» AND
20 =» RULENAME(creeventlist)
21 =» ILIKE
22 =» '%nome%'
23 =» LAST
24 =» 30
25 =» MINUTES;'
#--------------------------------------------------------------------------#
Ou:
#--------------------------------------------------------------------------#
awk -F'%20' '{for(n=1;n<=NF;n++)printf "%02d =» %s\n" ,n,$n}' texto.txt
01 =» curl -S -X POST -u admin -H 'Version: 15.1' -H 'Accept: application/json' 'https://<ip-Interno>/api/ariel/searches?query_expression=SELECT
02 =» UTF8%28payload%29
03 =» FROM
04 =» events
05 =» WHERE
06 =» hasoffense%3DTRUE
07 =» AND
08 =» RULENAME%28creeventlist%29
09 =» ILIKE
10 =» %27%25nome%25%27
11 =» LAST
12 =» 30
13 =» MINUTES%3B'


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts