Controle de Tempo Logado

1. Controle de Tempo Logado

Jean Santos
jeansantos056

(usa Debian)

Enviado em 30/03/2017 - 09:58h

Bom dia pessoal,

estou trabalhando em um controle de login, onde tenho o horário que a pessoa entra, horário que ela sai almoçar, horário que volta, e horário que sai para ir embora.
Preciso em cima desses valores ver quanto tempo aquela pessoa ficou logada no dia.

Não sei como fazer as somas das horas. Alguém pode dar alguma dica ou direção a respeito?


  


2. Re: Controle de Tempo Logado

Renan Arantes
R3nan

(usa Debian)

Enviado em 30/03/2017 - 10:24h

de uma olhada nos comando last e lastlog


3. Re: Controle de Tempo Logado

Jean Santos
jeansantos056

(usa Debian)

Enviado em 30/03/2017 - 10:56h

Não é login logout na máquina, é no VOIP.

Os horários eu tenho, a minha dúvida é como trabalhar com eles. Por exemplo:

$login=07:00:00
$logout=13:00:00

result=$(( $logout - $login ))

Essa conta que não consigo fazer.


4. Re: Controle de Tempo Logado

Renan Arantes
R3nan

(usa Debian)

Enviado em 30/03/2017 - 14:20h

substração aritmética vc pode usar o expr

ex:
expr 5 - 3

o resultado vai ser 2

agora com horas fechadas vc pode pesquisar pelo date o comando date -d tem várias opções


5. Re: Controle de Tempo Logado

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 30/03/2017 - 16:56h

Veja se esse exemplo ajuda:

#!/bin/bash

hora_entrada='08:00'
hora_almoco='12:00'
hora_retorno='14:00'
hora_saida='19:00'

# Converte as horas para o formato "Unix timestamp"
function humanToUnixTime {
date -d "$1" "+%s"
}

# Converte o formato "Unix timestamp" para formato de hora legivel
function unixTimeToHuman {
date -ud "@$1" "+%Hh:%Mm"
}

# Quantas horas se trabalhou pela manha?
x=$(humanToUnixTime $hora_entrada)
y=$(humanToUnixTime $hora_almoco)

(( intervalo_manha = y - x ))

echo "Horas trabalhadas pela manha: $(unixTimeToHuman $intervalo_manha)"


Executando:

$ ./calc_horas.sh
Horas trabalhadas pela manha: 04h:00m




6. Re: Controle de Tempo Logado

Renan Arantes
R3nan

(usa Debian)

Enviado em 30/03/2017 - 17:09h

SMarcell escreveu:

Veja se esse exemplo ajuda:

#!/bin/bash

hora_entrada='08:00'
hora_almoco='12:00'
hora_retorno='14:00'
hora_saida='19:00'

# Converte as horas para o formato "Unix timestamp"
function humanToUnixTime {
date -d "$1" "+%s"
}

# Converte o formato "Unix timestamp" para formato de hora legivel
function unixTimeToHuman {
date -ud "@$1" "+%Hh:%Mm"
}

# Quantas horas se trabalhou pela manha?
x=$(humanToUnixTime $hora_entrada)
y=$(humanToUnixTime $hora_almoco)

(( intervalo_manha = y - x ))

echo "Horas trabalhadas pela manha: $(unixTimeToHuman $intervalo_manha)"


Executando:

$ ./calc_horas.sh
Horas trabalhadas pela manha: 04h:00m



da hora o seu expelmpo +1


7. Re: Controle de Tempo Logado

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/03/2017 - 17:10h

jeansantos056 escreveu:

Não é login logout na máquina, é no VOIP.

Os horários eu tenho, a minha dúvida é como trabalhar com eles. Por exemplo:

$login=07:00:00
$logout=13:00:00

result=$(( $logout - $login ))

Essa conta que não consigo fazer.


Boa tarde jeansantos056.
A não ser que use somente "HORA CHEIA", sugiro que transforme em segundos . . . .
Pois, depende do caso, vai dar resultado negativo . . . .
Para calcular, pode usar o "awk" ou "bc"

Exemplo com o awk, convertendo para segundos e subtraindo . . .
awk -F '[#:]' '{printf "%s\n" ,(($1*3600+$2*60+$3)-($4*3600+$5*60+$6))/3600}' <<< "13:30:00#07:00:00"

Marcelo Oliver








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts