[Cascavel-pm] localtime

igor em izut.com igor em izut.com
Segunda Maio 15 09:39:29 PDT 2006


Fernando,

> preciso com urgencia de uma ajuda de como utilizar o localtime ou outra
> função que
> trasforme um dado que esteja em segundos para data ;
> dia mes semana ano horas e segundos
> isso é para saber quando foi obtido o ip via dhcp e ate quando ele esta
> válido.

Certo. Para isto você deve utilizar a função localtime (perldoc -f localtime).

> os dados estão como abaixo.
> DHCPSNAME=''
> LEASETIME=2592000           todos estão em segundos
> RENEWALTIME=1296000
> REBINDTIME=2268000
> INTERFACE='eth0'

Em segundos a partir de que horário? Talvez em segundos desde a criação do
arquivo? Se for isso, você pode utilizar o comando stat (perldoc -f stat) para
obter a data de criação do arquivo, e então adicionar o número de segundos
especificados, para saber quando haverá a renovação do lease.

>   esses dados sao obtidos atraves do comando no linux
> more /var/lib/dhcpcd/dhcpcd-eth0.info
>


Aqui está um código exemplo. Pode ser que o horário base para a renovação seja
baseada no mtime, ao invés do ctime. Caso este seja o correto, perldoc -f stat
para saber o número do campo que deve ser pego.

<code>
my $filename = '/var/lib/dhcpcd/dhcpcd-eth0.info';
my $ctime = (stat $filename)[10];

open my $fh, "<", $filename or die $!;
my @filelines = <$fh>;
close $fh;

foreach (@filelines) {
    if (/^RENEWALTIME=(.*)$/) {
        print "Próxima renovação será em: " . localtime($ctime + $1) . "\n";
    }
}
</code>

Mais uma vez, este código está 'untested' e sim, poderia ser feito em menor
quantidade de linhas. Creio que está auto-explicativo.

Igor.

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



Mais detalhes sobre a lista de discussão Cascavel-pm