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: hpfn
Subject: Re: [Bulk] Re: [shell-script] atualizar valor de variável
Date: Mon, 8 Dec 2014 11:13:45 -0200

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=\(\([0-9]\{1,3\}.\)\{3\}[0-9]\{1,3\}\).*/\1/'"

# 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]