Comando de Shell Script retornando erro de data [RESOLVIDO]

1. Comando de Shell Script retornando erro de data [RESOLVIDO]

Fagner Souza
careca_fagner

(usa Debian)

Enviado em 08/10/2012 - 08:42h

Bom dia pessoal, sou novato no Linux e principalmente utilizando Shell Script, vamos lá...

Tenho um servidor de internet e o Sarg instalado, executando o comando Sarg ele executa direitinho o relatório e realizando uma busca no sentido de obter uma ajuda para executar o relatório em um determinado horário foi criado o sguinte Script:

#!/bin/bash

HOJE=$(date --date "0 day ago" +%DD/%MM/%YYYY)
sarg -f /etc/sarg/sarg.conf -d $HOJE-$HOJE

Peço a gentileza de me ajudarem e me corrigirem se o Script estiver errado, pois quando executo o mesmo retorna o seguinte erro:

SARG: The date passed as argument is not formated as dd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy.

Entendi que o formato da data esta errado ou algum outro erro, porém vrifiquei no servidor que o formato esta correto... poderiam me ajudar galera????




  


2. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 08/10/2012 - 10:18h

Não está correto, se você chamar um echo dentro do script na varíavel $HOJE, verás que a saída não é compatível com o que determina o manual do sarg.

Acredito que o correto seria mais ou menos isso:



#!/bin/bash
HOJE=$(date --date "0 day ago" +%d/%m/%Y)
sarg -f /etc/sarg/sarg.conf -d $HOJE-$HOJE



3. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

Fagner Souza
careca_fagner

(usa Debian)

Enviado em 08/10/2012 - 10:49h

Então meu amigo, agradeço primeiramente pelo intuito de me corrigir, porém mesmo alterando da forma como você me ajudou ainda continua retornardo o mesmo erro...


4. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 08/10/2012 - 11:10h

Olá, por razões de testes, eu baixei o sarg versão 2.3.2 e testei o seu script, retornando o erro:

SARG: The date passed as argument is not formated as dd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy.

Depois criei um script com os parâmetros do date trocado e retornou:

SARG: Nenhum registro encontrado
SARG: Fim

Ou seja, executou corretamente.

Tente dar um echo na varíavel $HOJE e veja se a saída está correta, ela precisa retornar 08/10/2012


#!/bin/bash
HOJE=$(date --date "0 day ago" +%d/%m/%Y)
echo $HOJE
sarg -f /etc/sarg/sarg.conf -d $HOJE-$HOJE




5. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

Fagner Souza
careca_fagner

(usa Debian)

Enviado em 08/10/2012 - 11:20h

Opa, o echo retornou a data certinho, porém o erro do formtado data continua...


6. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 08/10/2012 - 12:48h

Isso teoricamente já bastava para evitar a mensagem de erro, você está rodando manualmente ou via cron? Somente retorna essa mensagem de erro?


7. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

Fagner Souza
careca_fagner

(usa Debian)

Enviado em 08/10/2012 - 17:15h

Meu amigo, gostaria de agradecer imensamente a sua ajuda, um bom guerreiro não desiste nunca certo? pois eu sou um guerreiro e não desisto nunca até resolver um problema...

Tendo em vista que o erro que retornava era referente a formatação da data eu realizei uma pesquisa referente a formatação de data e achei esta documentação....

Desvendando o comando DATE
Este tutorial mostra alguns exemplos de como utilizar o comando date para:
• Exibir a data/hora do Sistema;
• Alterar a data/hora do Sistema;
• Exibir a data/hora Formatada;
• Efetuar cálculos com Data e Hora.

Alterando a Data e Hora do Sistema:

Toda vez que o sistema operacional Linux é inicializado, este busca no relógio da BIOS (também chamado de relógio de hardware) as configurações necessárias para configurar a data/hora do sistema. Ou seja, no Linux podemos ter a data/hora do sistema diferente da data/hora que temos no hardware, e essa informação é muito importante no momento de efetuar ajustes.

Pode-se ajustar sua data e hora conforme necessário, porém a mesma não será mantida até o próximo boot, quando o sistema fará uma nova requisição ao relógio do hardware para ajustar-se.

Se for executado apenas o comando date no shell do Linux será obtido um resultado com a seguinte formatação:

Qui Jun 19 21:37:16 BRT 2008

Para ajustar a data do sistema para o dia 14 de setembro de 2008 (meu aniversário rsrs :) ) poderia ser utilizado o seguinte comando:

Sintaxe: date mês/dia/ano

# date -s 09/14/2008

Após ajustar a data do sistema é importante sincronizá-la com a data do hardware, para isso use o seguinte comando na seqüência:

# hwclock -w

Dica: Para ajustar a data/hora do sistema e sincronizar com o hardware em um único comando é muito simples, basta seguir a seguinte sintaxe:

mm (mês 00-12)
dd (dia 00-31)
HH (hora 00-23)
MM (min 00-59)
YYYY (0000-9999)

date mmddHHMMYYYY

Exemplo 1: Ajustar a data para o dia 14 de setembro de 2008 e a hora para 18:30, por fim sincronizar com o relógio do hardware:

# date 091418302008 | hwclock -w

Exemplo 2: Ajustar a data para o dia 10 de agosto de 1987 e a hora para 07:50, por fim sincronizar com o relógio do hardware:

# date 081007501987 | hwclock -w

Parâmetros que podem ser utilizados para formatação de datas:
• %A : dia da semana (domingo,..., sábado).
• %B : nome do mês (janeiro,..., dezembro).
• %H : hora do dia (0 a 23).
• %M : minuto (0 a 59).
• %S : segundos (0 a 61).
• %T : hora no formato hh:mm:ss.
• %Y : ano.
• %a : dia da semana abreviado (dom,..., sab).
• %b : nome do mês abreviado (jan,..., dez).
• %c : dia da semana, data e hora.
• %d : dia do mês (00-31).
• %j : dia ano (1 a 366).
• %m : mês (1 a 12).
• %s : número de segundos desde das zero horas de 01/01/1970.
• %w : dia da semana, onde 0 = domingo, 1 = segunda,..., 6 = sábado.
• %x : representação da data local.
• %y : os dois últimos dígitos do ano.
• %r : formato de 12 horas completo (hh:mm:ss AM/PM)

Exemplos de formatações de data/hora com o comando date no shell:

Comando: # date
Saída: Qui Jun 19 22:40:28 BRT 2008

Comando: # date +%d/%m/%y
Saída: 19/06/08

Comando: # date +%d/%m/%Y
Saída: 19/06/2008

Comando: # date +%H:%M:%S
Saída: 22:45:24

Comando: # date "+%d %B %Y"
Saída: 19 junho 2008

Comando: # date "+%d %B %Y , %A"
Saída: 19 junho 2008 , quinta

Exemplos de cálculos com Data/Hora no Linux.

Qual a data de cinco dias atrás?

Comando: # date +%d%m%y -d "5 days ago"
Saída: 140608

Que dia e hora serão, se adicionarmos 45 horas na hora atual?

Comando: # date --date "45 hours"
Saída: Sáb Jun 21 20:02:38 BRT 2008

Que dia será daqui duas semanas?

Comando: # date -d "2 week"
Saída: Qui Jul 3 23:22:25 BRT 2008

Que dia será daqui a 5 meses e 2 dia?

Comando: # date -d "5 month 2 day"
Saída: Sáb Nov 22 00:37:53 BRST 2008

Outro exemplos:

# date
Qui Jun 19 23:56:28 BRT 2008

# date --date=now
Qui Jun 19 23:56:28 BRT 2008

# date --date=today # Mesma Coisa
Qui Jun 19 23:56:28 BRT 2008

# date --date='3 seconds'
Qui Jun 19 23:56:31 BRT 2008

# date --date='3 seconds ago'
Qui Jun 19 23:56:25 BRT 2008

# date --date='4 hours'
Sex Jun 20 03:56:28 BRT 2008

# date --date='tomorrow'
Sex Jun 20 23:56:28 BRT 2008

# date --date='1 day'
Sex Jun 20 23:56:28 BRT 2008

# date --date='1 days'
Sex Jun 20 23:56:28 BRT 2008

# date --date='yesterday'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 day ago'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 days ago'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 week'
Qui Jun 26 23:56:28 BRT 2008

# date --date='1 fortnight'
Qui Jul 3 23:56:28 BRT 2008

# date --date='1 month'
Sáb Jul 19 23:56:28 BRT 2008

# date --date='1 year'
Sex Jun 19 23:56:28 BRT 2009

Ou seja, estavamos utilizando o parametro %y em minusculo onde trazia somete os ultimos 2 digitos do ano e utilizando %Y em maiusculo não retornou erro e gerou o relatório perfeitamente....

Cara, obrigado pela ajuda e espero que este tópico ajude outras pessoas!!!

Uhuhuhuhu!!!


8. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 08/10/2012 - 17:39h

Muito bom artigo, mas eu coloquei o %Y maiúsculo no meu script, veja acima :D, pensei que você tivesse copiado e colado. Mas enfim, o artigo ajudará realmente outros usuários do Linux.


9. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

Fagner Souza
careca_fagner

(usa Debian)

Enviado em 08/10/2012 - 20:46h

Poxa! estava tão focado em resolver meu problema que nem percebi que o seu Script esta com o Y em maiusculo.... foi mal!!! muito obrigado mesmo pela força!!!

Pois sou entrei a pouco tempo em uma empresa e deixaram um monte de tarefas em Linux a ser feita, a primeira delas era isso fazer o sarg funcionar, ista já tinha feito, dai queria implementar um script para executar o relatório de tempo em tempo...

Obrigado mesmo...


10. Re: Comando de Shell Script retornando erro de data [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 08/10/2012 - 20:50h

Disponha meu caro.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts