Pular para o conteúdo

Controle de Tempo Logado

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Controle de Tempo Logado

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?

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Controle de Tempo Logado

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

de uma olhada nos comando last e lastlog

3. Re: Controle de Tempo Logado

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

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

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

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

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


Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder