Fazer Modificações em Script.

1. Fazer Modificações em Script.

Luan
ColtSeals

(usa Ubuntu)

Enviado em 11/06/2018 - 14:08h

#!/bin/bash

input_file=/etc/openvpn/openvpn-status.log

echo ""

echo "Reading $input_file"

echo ""
echo -e " \033[0;30;46m MONITOR SSH \033[0m"
echo -e " \033[01;37;44m USUARIOS RECEBIDOS ENVIADOS INICIO DA CONEXÃO \033[0m"

while read line; do



if [[ "$line" = *,* ]]; then

IFS=',' read -ra fields <<< "$line" #Convert string to array

if [[ "${fields[1]}" =~ \.[0-9]{1,3}:[0-9] ]]; then

received=$((fields[2] / 2**20))

sent=$((fields[3] / 2**20))
echo -ne " \033[01;33m"; printf '%-21s%-16s%-7s%s' " ${fields[0]}" "${received} MB" "${sent} MB"; echo -e " \033[01;32m${fields[4]}"
echo -e "\033[1;37m -----------------------------------------------------------------\033[0m"

echo ""
sleep 5s
fi
fi
done < $input_file

echo ""


echo "" Detalhes


ESTOU COM ESSE SCRIPT QUERIA TROCAR A DATA E TRANSFORMALO EM TIME E TMB FAZER FUNCIONAR A OPÇÃO SLEEP 5S


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/06/2018 - 01:39h

ColtSeals escreveu:

OpenVPN CLIENT LIST
Updated,Mon Jun 11 09:37:13 2018
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
egnaldo,127.0.0.1:36632,30283,107993,Mon Jun 11 09:18:16 2018
juniornerd,127.0.0.1:36639,71372,68067,Mon Jun 11 09:19:07 2018
paulinhovl,127.0.0.1:36634,1912088,10061135,Mon Jun 11 09:18:18 2018
nob,127.0.0.1:36646,1157801,4257009,Mon Jun 11 09:35:36 2018
valeria,127.0.0.1:36636,22021,32102,Mon Jun 11 09:18:22 2018
jon,127.0.0.1:36630,1614625,33293707,Mon Jun 11 09:18:12 2018
zim,127.0.0.1:36640,4169776,15213653,Mon Jun 11 09:19:29 2018
viviane,127.0.0.1:36637,27643,46871,Mon Jun 11 09:18:27 2018
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.19,zim,127.0.0.1:36640,Mon Jun 11 09:37:12 2018
10.8.0.12,paulinhovl,127.0.0.1:36634,Mon Jun 11 09:37:12 2018
10.8.0.15,juniornerd,127.0.0.1:36639,Mon Jun 11 09:36:35 2018
10.8.0.11,valeria,127.0.0.1:36636,Mon Jun 11 09:36:20 2018
10.8.0.13,egnaldo,127.0.0.1:36632,Mon Jun 11 09:37:06 2018
10.8.0.18,nob,127.0.0.1:36646,Mon Jun 11 09:37:12 2018
10.8.0.20,viviane,127.0.0.1:36637,Mon Jun 11 09:31:09 2018
10.8.0.21,jon,127.0.0.1:36630,Mon Jun 11 09:37:12 2018
GLOBAL STATS
Max bcast/mcast queue length,0
END
Name,Bytes Received,Bytes Sent,Connected Since so queria essas informacoes e a conversao de data para contagem de tempo que cada usuario esta online. e que ficasse atualizando a cada 5 segundos e ao inves de bytes transformasse para MB o script que postei acima ja faz isso


Veja se é mais ou menos isso....
while IFS="," read -r c1 c2 c3 c4 c5;do 
[[ "$c1" =~ ^[a-z]+ ]] && echo "$c1 $((c3/1048576)) MB $((c4/1048576)) MB $(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%H:%M:%S")";
done<log.txt

SAíDA:
egnaldo 0 MB 0 MB 16:15:43
juniornerd 0 MB 0 MB 16:14:52
paulinhovl 1 MB 9 MB 16:15:41
nob 1 MB 4 MB 15:58:23
valeria 0 MB 0 MB 16:15:37
jon 1 MB 31 MB 16:15:47
zim 3 MB 14 MB 16:14:30
viviane 0 MB 0 MB 16:15:32

O tempo foi convertido em relação ao horário atual

Marcelo Oliver


3. Re: Fazer Modificações em Script.

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 11/06/2018 - 15:20h

Questão para programadores.
Vou mudar o título do seu Post, para dar mais visibilidade.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


4. Re: Fazer Modificações em Script.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/06/2018 - 18:31h

ColtSeals escreveu:

#!/bin/bash

input_file=/etc/openvpn/openvpn-status.log

echo ""

echo "Reading $input_file"

echo ""
echo -e " \033[0;30;46m MONITOR SSH \033[0m"
echo -e " \033[01;37;44m USUARIOS RECEBIDOS ENVIADOS INICIO DA CONEXÃO \033[0m"

while read line; do



if [[ "$line" = *,* ]]; then

IFS=',' read -ra fields <<< "$line" #Convert string to array

if [[ "${fields[1]}" =~ \.[0-9]{1,3}:[0-9] ]]; then

received=$((fields[2] / 2**20))

sent=$((fields[3] / 2**20))
echo -ne " \033[01;33m"; printf '%-21s%-16s%-7s%s' " ${fields[0]}" "${received} MB" "${sent} MB"; echo -e " \033[01;32m${fields[4]}"
echo -e "\033[1;37m -----------------------------------------------------------------\033[0m"

echo ""
sleep 5s
fi
fi
done < $input_file

echo ""


echo "" Detalhes


ESTOU COM ESSE SCRIPT QUERIA TROCAR A DATA E TRANSFORMÁ-LO EM TIME E TMB FAZER FUNCIONAR A OPÇÃO SLEEP 5S


Boa noite, ColtSeals.
Poste um trecho do arquivo de log.

marcelo oliver



5. arquivo de log

Luan
ColtSeals

(usa Ubuntu)

Enviado em 11/06/2018 - 19:29h

OpenVPN CLIENT LIST
Updated,Mon Jun 11 09:37:13 2018
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
egnaldo,127.0.0.1:36632,30283,107993,Mon Jun 11 09:18:16 2018
juniornerd,127.0.0.1:36639,71372,68067,Mon Jun 11 09:19:07 2018
paulinhovl,127.0.0.1:36634,1912088,10061135,Mon Jun 11 09:18:18 2018
nob,127.0.0.1:36646,1157801,4257009,Mon Jun 11 09:35:36 2018
valeria,127.0.0.1:36636,22021,32102,Mon Jun 11 09:18:22 2018
jon,127.0.0.1:36630,1614625,33293707,Mon Jun 11 09:18:12 2018
zim,127.0.0.1:36640,4169776,15213653,Mon Jun 11 09:19:29 2018
viviane,127.0.0.1:36637,27643,46871,Mon Jun 11 09:18:27 2018
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.19,zim,127.0.0.1:36640,Mon Jun 11 09:37:12 2018
10.8.0.12,paulinhovl,127.0.0.1:36634,Mon Jun 11 09:37:12 2018
10.8.0.15,juniornerd,127.0.0.1:36639,Mon Jun 11 09:36:35 2018
10.8.0.11,valeria,127.0.0.1:36636,Mon Jun 11 09:36:20 2018
10.8.0.13,egnaldo,127.0.0.1:36632,Mon Jun 11 09:37:06 2018
10.8.0.18,nob,127.0.0.1:36646,Mon Jun 11 09:37:12 2018
10.8.0.20,viviane,127.0.0.1:36637,Mon Jun 11 09:31:09 2018
10.8.0.21,jon,127.0.0.1:36630,Mon Jun 11 09:37:12 2018
GLOBAL STATS
Max bcast/mcast queue length,0
END




Name,Bytes Received,Bytes Sent,Connected Since so queria essas informacoes e a conversao de data para contagem de tempo que cada usuario esta online. e que ficasse atualizando a cada 5 segundos e ao inves de bytes transformasse para MB o script que postei acima ja faz isso


6. solucao

Luan
ColtSeals

(usa Ubuntu)

Enviado em 12/06/2018 - 16:40h

#!/bin/bash
function CTRL()
{
vpn
exit
}
trap CTRL SIGINT

function AlterarTempo ()
{
tmp1=$1
tmp2=$(date '+%H:%M%S')
var11=$(echo $tmp1 | cut -c 1-2)
var12=$(echo $tmp1 | cut -c 4-5)
var13=$(echo $tmp1 | cut -c 7-8)
var21=$(echo $tmp2 | cut -c 1-2)
var22=$(echo $tmp2 | cut -c 4-5)
var23=$(echo $tmp2 | cut -c 7-8)
calc1=$(echo $var11*3600 + $var12*60 + $var13 | bc)
calc2=$(echo $var21*3600 + $var22*60 + $var23 | bc)
seg=$(($calc2 - $calc1))
min=$(($seg/60))
seg=$(($seg-$min*60))
hor=$(($min/60))
min=$(($min-$hor*60))
hora=$(printf "%02dh:%02dm:%02ds\n" $hor $min $seg;)
echo $hora
}
clear
while :; do
echo -e "\033[7;30;46m --------------------------------------------------------------\033[0m"
echo -e " \033[0;30;46m MONITOR SSH \033[0m"
echo -e " \033[01;37;44m USUARIOS RECEBIDO | ENVIADO TEMPO CONECTADO STATUS \033[0m"
echo -e "\033[7;30;46m --------------------------------------------------------------\033[0m"
while read linha; do
if [[ $linha == *,* ]]; then
IFS=',' read -ra dados <<< "$linha"
if [[ ${dados[1]} =~ \.[0-9]{1,3}:[0-9] ]]; then
_Recebido=$((dados[2] / 2**20))
_Enviados=$((dados[3] / 2**20))
_Data=$(AlterarTempo $(echo -e ${dados[4]} | awk -F' ' '{print $4}'))
echo -ne " \033[01;33m"; printf '%-21s%-16s%-7s%s' " ${dados[0]}" "${_Recebido}MB | ${_Enviados}MB " " $_Data"; echo -e " \033[01;32m ONLINE"
echo -e "\033[7;30;46m --------------------------------------------------------------\033[0m"
fi
fi
done <<< "$(cat /etc/openvpn/ope*.log | grep -E '\.[0-9]{1,3}:[0-9]')"
echo ""
echo -e "\033[01;36m APERTE CTRL+C PARA VOLTAR AO MENU..."

sleep 5s
clear
done


conseguir resolver a questao de sleep 5 s so que meu calculo de tempo fica bom em horas minutos mas em segundos ele avanca depois volta de 30 era pra ir para 35 ele volta para 25 depois 30 35 30 de novo segundos estao errados


7. O melhor

Luan
ColtSeals

(usa Ubuntu)

Enviado em 13/06/2018 - 05:56h

msoliver escreveu:

ColtSeals escreveu:

OpenVPN CLIENT LIST
Updated,Mon Jun 11 09:37:13 2018
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
egnaldo,127.0.0.1:36632,30283,107993,Mon Jun 11 09:18:16 2018
juniornerd,127.0.0.1:36639,71372,68067,Mon Jun 11 09:19:07 2018
paulinhovl,127.0.0.1:36634,1912088,10061135,Mon Jun 11 09:18:18 2018
nob,127.0.0.1:36646,1157801,4257009,Mon Jun 11 09:35:36 2018
valeria,127.0.0.1:36636,22021,32102,Mon Jun 11 09:18:22 2018
jon,127.0.0.1:36630,1614625,33293707,Mon Jun 11 09:18:12 2018
zim,127.0.0.1:36640,4169776,15213653,Mon Jun 11 09:19:29 2018
viviane,127.0.0.1:36637,27643,46871,Mon Jun 11 09:18:27 2018
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.19,zim,127.0.0.1:36640,Mon Jun 11 09:37:12 2018
10.8.0.12,paulinhovl,127.0.0.1:36634,Mon Jun 11 09:37:12 2018
10.8.0.15,juniornerd,127.0.0.1:36639,Mon Jun 11 09:36:35 2018
10.8.0.11,valeria,127.0.0.1:36636,Mon Jun 11 09:36:20 2018
10.8.0.13,egnaldo,127.0.0.1:36632,Mon Jun 11 09:37:06 2018
10.8.0.18,nob,127.0.0.1:36646,Mon Jun 11 09:37:12 2018
10.8.0.20,viviane,127.0.0.1:36637,Mon Jun 11 09:31:09 2018
10.8.0.21,jon,127.0.0.1:36630,Mon Jun 11 09:37:12 2018
GLOBAL STATS
Max bcast/mcast queue length,0
END
Name,Bytes Received,Bytes Sent,Connected Since so queria essas informacoes e a conversao de data para contagem de tempo que cada usuario esta online. e que ficasse atualizando a cada 5 segundos e ao inves de bytes transformasse para MB o script que postei acima ja faz isso


Veja se é mais ou menos isso....
while IFS="," read -r c1 c2 c3 c4 c5;do 
[[ "$c1" =~ ^[a-z]+ ]] && echo "$c1 $((c3/1048576)) MB $((c4/1048576)) MB $(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%H:%M:%S")";
done<log.txt

SAíDA:
egnaldo 0 MB 0 MB 16:15:43
juniornerd 0 MB 0 MB 16:14:52
paulinhovl 1 MB 9 MB 16:15:41
nob 1 MB 4 MB 15:58:23
valeria 0 MB 0 MB 16:15:37
jon 1 MB 31 MB 16:15:47
zim 3 MB 14 MB 16:14:30
viviane 0 MB 0 MB 16:15:32

O tempo foi convertido em relação ao horário atual

Marcelo Oliver






ate o momento a sua ideia foi otima mas no meu caso nao funcionou coloquei essa opção data no script que ja possuo. O mesmo inicia ja com 20 horas de inicio ao invés de contar o TEMPO
E o script que adicionei a função la em cima ELE FICA COM OS SEGUNDOS INDO E VOLTANDO O QUE FIZ DE ERRADO?


8. Re: Fazer Modificações em Script.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/06/2018 - 13:01h

ColtSeals escreveu:

msoliver escreveu:

ColtSeals escreveu:

OpenVPN CLIENT LIST
Updated,Mon Jun 11 09:37:13 2018
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
egnaldo,127.0.0.1:36632,30283,107993,Mon Jun 11 09:18:16 2018
juniornerd,127.0.0.1:36639,71372,68067,Mon Jun 11 09:19:07 2018
paulinhovl,127.0.0.1:36634,1912088,10061135,Mon Jun 11 09:18:18 2018
nob,127.0.0.1:36646,1157801,4257009,Mon Jun 11 09:35:36 2018
valeria,127.0.0.1:36636,22021,32102,Mon Jun 11 09:18:22 2018
jon,127.0.0.1:36630,1614625,33293707,Mon Jun 11 09:18:12 2018
zim,127.0.0.1:36640,4169776,15213653,Mon Jun 11 09:19:29 2018
viviane,127.0.0.1:36637,27643,46871,Mon Jun 11 09:18:27 2018
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.19,zim,127.0.0.1:36640,Mon Jun 11 09:37:12 2018
10.8.0.12,paulinhovl,127.0.0.1:36634,Mon Jun 11 09:37:12 2018
10.8.0.15,juniornerd,127.0.0.1:36639,Mon Jun 11 09:36:35 2018
10.8.0.11,valeria,127.0.0.1:36636,Mon Jun 11 09:36:20 2018
10.8.0.13,egnaldo,127.0.0.1:36632,Mon Jun 11 09:37:06 2018
10.8.0.18,nob,127.0.0.1:36646,Mon Jun 11 09:37:12 2018
10.8.0.20,viviane,127.0.0.1:36637,Mon Jun 11 09:31:09 2018
10.8.0.21,jon,127.0.0.1:36630,Mon Jun 11 09:37:12 2018
GLOBAL STATS
Max bcast/mcast queue length,0
END
Name,Bytes Received,Bytes Sent,Connected Since so queria essas informacoes e a conversao de data para contagem de tempo que cada usuario esta online. e que ficasse atualizando a cada 5 segundos e ao inves de bytes transformasse para MB o script que postei acima ja faz isso


Veja se é mais ou menos isso....
while IFS="," read -r c1 c2 c3 c4 c5;do 
[[ "$c1" =~ ^[a-z]+ ]] && echo "$c1 $((c3/1048576)) MB $((c4/1048576)) MB $(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%H:%M:%S")";
done<log.txt

SAíDA:
egnaldo 0 MB 0 MB 16:15:43
juniornerd 0 MB 0 MB 16:14:52
paulinhovl 1 MB 9 MB 16:15:41
nob 1 MB 4 MB 15:58:23
valeria 0 MB 0 MB 16:15:37
jon 1 MB 31 MB 16:15:47
zim 3 MB 14 MB 16:14:30
viviane 0 MB 0 MB 16:15:32

O tempo foi convertido em relação ao horário atual

Marcelo Oliver

Ate o momento a sua ideia foi otima mas no meu caso nao funcionou coloquei essa opção data no script que ja possuo. O mesmo inicia ja com 20 horas de inicio ao invés de contar o TEMPO
E o script que adicionei a função la em cima ELE FICA COM OS SEGUNDOS INDO E VOLTANDO O QUE FIZ DE ERRADO?


Boa tarde ColtSeals.
Notei uma falha na "DATA",
$(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%H:%M:%S")
Se a diferença entre a data atual e o "Connected Since" for maior que "86400" (segundos em um dia), já está conectado
há mais de um dia.... então deve ser calculado o número de dias.
dias=$(( ($(date +%s) - $(date -d "$c5" +%s) ) / 86400 ))
E o script que adicionei a função la em cima ELE FICA COM OS SEGUNDOS INDO E VOLTANDO O QUE FIZ DE ERRADO?[/quote]
Vou verificar...

marcelo oliver



9. Substituo

Luan
ColtSeals

(usa Ubuntu)

Enviado em 13/06/2018 - 13:18h

AINDA NAO ENTENDI MUITO BEM ,ADICIONO ESSE MANTENDO O OUTRO OU APENAS EXCLUO O OUTRO E COLOCO ESSE???


10. Tempo

Luan
ColtSeals

(usa Ubuntu)

Enviado em 13/06/2018 - 18:33h

Adicionei o tempo e nao deu certo


11. Re: Fazer Modificações em Script.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/06/2018 - 20:38h

ColtSeals escreveu:
AINDA NAO ENTENDI MUITO BEM ,
ADICIONO ESSE MANTENDO O OUTRO OU APENAS EXCLUO O OUTRO E COLOCO ESSE???


Adicione esse,
O anterior, calcula HH MM SS, corretamente. No SCRIPT que criei.
Esse que passei, calcula os dias.
Testes:
c5="Mon Jun 11 09:29:00 2018"
echo "$(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%H:%M:%S")"
11:00:00
echo Dias: $(( ($(date +%s) - $(date -d "$c5" +%s) ) / 86400 ))
2
Juntando:
echo "$(( ($(date +%s) - $(date -d "$c5" +%s) ) / 86400 )) Dias $(date -d@$(( $(date +%s)-$(date -d"$c5" +%s)+10800)) "+%Hh%Mm%Ss")"

marcelo


12. Nao ENTENDI

Luan
ColtSeals

(usa Ubuntu)

Enviado em 13/06/2018 - 21:51h

Primeiramente obrigado pela AJUDA. Amigo desculpa estou ficando confuso amigo kkkk desculpa de verdade vc falpu para adicionar esse no caso excluo tudo e adiciono esses dois ou o de cima ou o de baixo desculpa de verdade nao estou entendendo VC USA TELEGRAM OU ALGUM MEIO DE REDE SOCIAL PARA CONTATO?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts