Automatizar Processo

1. Automatizar Processo

Andryos
andryosribeiro

(usa Red Hat)

Enviado em 23/05/2022 - 14:59h

Pessoal, estou tentando automatizar esse processo, mas sem êxito, será que poderiam me ajudar?

Preciso que o script pegue o ID da conexão e execute o "explair for connection_id() xxx"

O que está errado?

#!/bin/bash

export sql="mysql -u root -p******** -h qualquerum -P3306"

id=$($sql -e "select connection_id();")

if [[ (( $id -eq 0 )) ]]

then

$sql -e "explain for connection_id $id;"

else

echo "Não deu certo"

fi

ERRO:
./teste: line 7: [[: connection_id()
8217303: syntax error in expression (error token is "()
8217303")
legal



  


2. Re: Automatizar Processo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/05/2022 - 19:57h

andryosribeiro escreveu:

Pessoal, estou tentando automatizar esse processo, mas sem êxito, será que poderiam me ajudar?

Preciso que o script pegue o ID da conexão e execute o "explair for connection_id() xxx"

O que está errado?

#!/bin/bash

export sql="mysql -u root -p******** -h qualquerum -P3306"

id=$($sql -e "select connection_id();")

if [[ (( $id -eq 0 )) ]]

then

$sql -e "explain for connection_id $id;"

else

echo "Não deu certo"

fi

ERRO:
./teste: line 7: [[: connection_id()
8217303: syntax error in expression (error token is "() 8217303")
legal


Boa noite.
Qual o valor da var $id?
Antes do teste, coloque:
echo "ID: $id"
Para checar o valor.

Tudo indica que a mesma tem algo além de números....
A function:
SELECT CONNECTION_ID();
Retorna somente números!
---------------------------------------------------------------------------------------------------------------
Simulando o ERRO:
id="1000()"
[[ "$id" -eq 1000 ]] && echo Eh 1000 || echo Não é 1000
bash: [[: 1000(): erro de sintaxe na expressão (token de erro é "()")
Não é 1000


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



3. Automatizar Processo

Andryos
andryosribeiro

(usa Red Hat)

Enviado em 24/05/2022 - 11:02h


msoliver escreveu:

andryosribeiro escreveu:

Pessoal, estou tentando automatizar esse processo, mas sem êxito, será que poderiam me ajudar?

Preciso que o script pegue o ID da conexão e execute o "explair for connection_id() xxx"

O que está errado?

#!/bin/bash

export sql="mysql -u root -p******** -h qualquerum -P3306"

id=$($sql -e "select connection_id();")

if [[ (( $id -eq 0 )) ]]

then

$sql -e "explain for connection_id $id;"

else

echo "Não deu certo"

fi

ERRO:
./teste: line 7: [[: connection_id()
8217303: syntax error in expression (error token is "() 8217303")
legal


Boa noite.
Qual o valor da var $id?
Antes do teste, coloque:
echo "ID: $id"
Para checar o valor.

Tudo indica que a mesma tem algo além de números....
A function:
SELECT CONNECTION_ID();
Retorna somente números!
---------------------------------------------------------------------------------------------------------------
Simulando o ERRO:
id="1000()"
[[ "$id" -eq 1000 ]] && echo Eh 1000 || echo Não é 1000
bash: [[: 1000(): erro de sintaxe na expressão (token de erro é "()")
Não é 1000


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Ele estava vindo com o cabeçalho também, por isso o erro. Obrigado Marcelo.

Agora a questão é que ele está pegando todos os $id de uma vez o que está gerando o erro. Será que consigo fazer com que ele pegue e execute um por vez?

#!/bin/bash

LOG=/home/srvhorus/adm/bin/mymon/teste.log

export sql="mysql -u root -pxxxxxx -h legalaqui -P3306"

id=$($sql -s -N -e "select id from information_schema.processlist;")

echo "${id}" >> ${LOG} 2>> ${LOG}

if [[ (( $id -eq 0 )) ]]

then

$sql -e "explain for connection ${id};" >> ${LOG} 2>> ${LOG}


fi

ERRO:
syntax error in expression (error token is "8218515
8218542
8217661
8218001
8218514")

Da pra ver que ele está pegando todos os IDs de uma vez.







4. Re: Automatizar Processo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/05/2022 - 18:51h

andryosribeiro escreveu:


msoliver escreveu:

andryosribeiro escreveu:

Pessoal, estou tentando automatizar esse processo, mas sem êxito, será que poderiam me ajudar?

Preciso que o script pegue o ID da conexão e execute o "explair for connection_id() xxx"

O que está errado?

#!/bin/bash

export sql="mysql -u root -p******** -h qualquerum -P3306"

id=$($sql -e "select connection_id();")

if [[ (( $id -eq 0 )) ]]

then

$sql -e "explain for connection_id $id;"

else

echo "Não deu certo"

fi

ERRO:
./teste: line 7: [[: connection_id()
8217303: syntax error in expression (error token is "() 8217303")
legal


Boa noite.
Qual o valor da var $id?
Antes do teste, coloque:
echo "ID: $id"
Para checar o valor.

Tudo indica que a mesma tem algo além de números....
A function:
SELECT CONNECTION_ID();
Retorna somente números!
---------------------------------------------------------------------------------------------------------------
Simulando o ERRO:
id="1000()"
[[ "$id" -eq 1000 ]] && echo Eh 1000 || echo Não é 1000
bash: [[: 1000(): erro de sintaxe na expressão (token de erro é "()")
Não é 1000


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Ele estava vindo com o cabeçalho também, por isso o erro. Obrigado Marcelo.

Agora a questão é que ele está pegando todos os $id de uma vez o que está gerando o erro.
Será que consigo fazer com que ele pegue e execute um por vez?

#!/bin/bash

LOG=/home/srvhorus/adm/bin/mymon/teste.log

export sql="mysql -u root -pxxxxxx -h legalaqui -P3306"

id=$($sql -s -N -e "select id from information_schema.processlist;")

echo "${id}" >> ${LOG} 2>> ${LOG}

if [[ (( $id -eq 0 )) ]];then
$sql -e "explain for connection ${id};" >> ${LOG} 2>> ${LOG}
fi

ERRO:
syntax error in expression (error token is "8218515
8218542
8217661
8218001
8218514")

Da pra ver que ele está pegando todos os IDs de uma vez.

Opção 1;
for id in $($sql -s -N -e "select id from information_schema.processlist;");do
[[ "$id" -eq 0 ]] && echo "faça algo"
done
# ----------------------------------------------------------------------------------------------- #
Opção 2:
$sql -s -N -e "select id from information_schema.processlist;" > $LOG
while read line;do
#TESTE condicional para cada $line
[[ "$line" -eq 0 ]] && echo "faça algo"
done<"$LOG"
#-------------------------------------------------------------------------------------------#
Direcione a saída do sql select para o xargs,
Exemplo:
printf "%s\n" {0..10}|xargs -ix bash -c "((x <= 5 )) && echo 'x <= 5' || echo 'x > 5'"
0 <= 5
1 <= 5
2 <= 5
3 <= 5
4 <= 5
5 <= 5
6 > 5
7 > 5
8 > 5
9 > 5
10 > 5

Ou com o grep:
for id in $($sql -s -N -e "select id from information_schema.processlist;");do
grep -Eq '^0$' <<< "$id" && echo $n:ÉZERO || echo $n:NZERO;
done
É isso,
______________________________________________________________________
Importante:
Se te ajudei, retribua.
É simples,
Marque o tópico como Resolvido e,
escolha a MELHOR RESPOSTA!


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts