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

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

Re: [Bulk] Re: [shell-script] atualizar valor de variável


From: Julio C. Neves
Subject: Re: [Bulk] Re: [shell-script] atualizar valor de variável
Date: Mon, 8 Dec 2014 11:25:55 -0200

Epa eu pensei que seu while estivesse rodando em um sub shell e qdo saísse do loop as variáveis estariam perdidas, mas pelo que vc mostrou, não existe sub shell.

Agora quem não está entendendo sou eu, já que as suas variáveis não serão perdidas e estarão visíveis ao longo de todo o script.

Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 09 a 13/03/15
São Paulo 4Linux 24 a 28/11/14
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 8 de dezembro de 2014 11:13, Herbert Parentes Fortes Neto (hpfn) address@hidden [shell-script] <address@hidden> escreveu:
 

também preciso de uma explicação mais detalhada da dica.

seguinte. preciso que o 'grep' seja executado a cada volta do loop
para pegar a última ocorrência de 'ACESSO SSH' e comparar o horário
que isso aconteceu e o ip. dependendo do horário e ip inicio o ssh.
queria tirar o GREP_LINES e GREP_AUTH do loop para ficar mais arrumado.
como os valores são o resultado de um comando, pensei que fosse possível
atualizá-los de alguma forma . o script está funcionando como esperado
uso doméstico.

melhor mostrar o script do que ficar tentando explicar:

TIME_R=$(date +%e%H%M%S)

# First Loop
#GREP_LINES=$(grep -a "ACESSO SSH" /var/log/kern.log)
# used in ip to get the ip address
FILTER_IP="sed 's/^[A-Z]*.*SRC="">
# BOTH LOOPS
# get the date and time
DATE_TIME="sed 's/^[[:alpha:]]\{3\} \([[:digit:] ]\{1,2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\).*/\1/'"

# Second Loop
# for reg_out
#GREP_AUTH=$(grep -a "pam_unix(sshd:session): session closed" /var/log/auth.log)

while true
do
while true
do
GREP_LINES=$(grep -a "ACESSO SSH" /var/log/kern.log | tail -n1)

ip=$(eval $FILTER_IP <<< "$GREP_LINES")

if [ "$ip" = "192.168.0.1" ]
then
# confere a hora da tentativa de acesso
reg_in=$(eval "$DATE_TIME" <<< "$GREP_LINES")

if [[ "${reg_in//[: ]/}" > "${TIME_R/ /}" ]]
then
echo "iniciando sshd"
systemctl start sshd.service
#service sshd start
sleep 3
TIME_R=$(date +%e%H%M%S)
break
fi
fi
sleep 3
done
while true
do
# pega quando foi terminada a sessao
GREP_AUTH=$(grep -a "pam_unix(sshd:session): session closed" /var/log/auth.log | tail -n1

reg_out=$(eval $DATE_TIME <<< "$GREP_AUTH")

if [[ "${TIME_R/ /}" > "${reg_out//[: ]/}" ]]
then
#unset reg_out
continue
else
echo "desligando sshd"
systemctl stop sshd.service
#service sshd stop
TIME_R=$(date +%e%H%M%S)
break
fi
sleep 5
done
done

--
Herbert Parentes Fortes Neto (hpfn)



reply via email to

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