Preciso saber quantas conexões de um aplicativo estão conectadas ao meu banco de dados. para isso devo executar um procedimento armazenado. a saída é como:
CMD_EXEC: 1
IFCA_RET: 0
IFCA_RES: 0
XS_BYTES: 0
IFCA_GRES: 0
GXS_BYTES: 0
RETURN_CODE: 0
MSG: NULL
ROWNUM TEXT
1 DSNL200I -DSNC DISPLAY LOCATION REPORT FOLLOWS-
2 LOCATION PRDID T ATT CONNS
3 ::170.0.0.236 SQL09079 S 277
4 ::170.0.0.243 SQL10057 S 0
5 ::170.0.0.249 JCC04160 S 0
6 ::170.0.0.252 JCC03660 S 0
7 ::170.0.0.204 JCC04160 S 0
8 ::170.0.0.20 SQL10057 S 1
9 ::170.0.0.21 JCC03660 S 0
10 ::170.0.1.21 JCC04080 S 1440
11 ::170.0.1.231 JCC03660 S 1
12 ::170.0.7.2 JCC03640 S 0
13 ::170.0.8.241 JCC03640 S 0
14 ::170.0.8.142 JCC03690 S 0
15 ::192.168.7.2 SQL09079 S 0
16 ::192.168.1.4 JCC03650 S 5
17 ::192.168.1.5 JCC03650 S 6
18 ::192.168.1.0 JCC03690 S 0
19 ::192.168.4.0 JCC03610 S 7
20 ::192.168.4.0 JCC03610 S 2
21 ::192.168.4.0 JCC04080 S 504
22 ::192.168.1.7 SQL10055 S 1
23 DISPLAY LOCATION REPORT COMPLETE
"ADMIN_COMMAND_DB21" RETURN_STATUS: 0
a coluna CONNS
mostra a contagem de conexões. eu preciso fazer uma matriz com esta coluna e encontrar o seu máximo. por exemplo algo assim:
#/bin/bash
#number of logs to offload
#number of ADBAT
#number of QUEDBAT
#number of DSCDBAT
#nmber of connections
DB2PATH=/home/db2inst1/sqllib/bin/db2
$DB2PATH connect to mydb >> /dev/null
conn_arr=$($DB2PATH "CALL SYSPROC.ADMIN_COMMAND_DB21 ('-dis
location',17,LOC,NULL,?,?,?,?,?,?,?,?)" )
echo "$conn_arr" | ????
$DB2PATH connect reset >> /dev/null
Toda vez que este script os resultados e os números das linhas mudam. O que devo usar?
Para obter o número máximo de conexões e salvar o número na variável
mx
, tente:Como funciona
Por padrão, o awk lê um arquivo uma linha por vez.
/COMPLETE/{exit}
Se a linha atual corresponder ao regex
COMPLETE
, pare de ler mais linhas e saia para oEND
grupo de comandos.f{if($5+0>x)x=$5}
Se a variável
f
for verdadeira (diferente de zero), se o número na coluna 5 for maior que a variávelx
, definax
o valor na coluna 5./CONNS/{f=1}
Se a linha atual contiver a string (regex)
CONNS
, defina a variávelf
como um. Isso sinaliza o início da tabela.END{print x}
Após terminarmos de ler todas as linhas, imprima o valor de
x
.<<<"$conn_arr"
Diga ao awk para ler sua entrada da variável bash
conn_arr
. Essa construção é chamada de string here .