shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] HTTP Last-Modified


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] HTTP Last-Modified
Date: Sun, 25 May 2008 16:25:38 -0300

Ola.

Para ver os headers de uma requisição http vc pode usar o curl -v
(verbose) ou fazer uso do comando HEAD (com o comando -I)

Ex:
URL=http://releases.mozilla.org/pub/mozilla.org/calendar/sunbird/releases/0.8/linux-i686/pt-BR/sunbird-0.8.pt-BR.linux-i686.tar.gz

$ curl -sI "$URL"
HTTP/1.1 200 OK
Date: Sun, 25 May 2008 19:16:51 GMT
Server: Apache
Last-Modified: Tue, 01 Apr 2008 05:24:00 GMT
ETag: "62004a6b-859c64-f9cb9c00"
Accept-Ranges: bytes
Content-Length: 8756324
Content-Type: application/x-gzip
Content-Language: pt-br
X-Pad: avoid browser bug

$ curl -sI "$URL" 2>&1 | grep Last-Modified
Last-Modified: Tue, 01 Apr 2008 05:24:00 GMT

$ curl -sI "$URL" 2>&1 | grep Last-Modified | cut -d\: -f2-
 Tue, 01 Apr 2008 05:24:00 GMT

alias vc ate pode converter essa data para outro formato, como um timestamp:

$ date +"%s" -d "$(curl -sI "$URL" 2>&1 | grep Last-Modified | cut -d\: -f2- )"

1207027440

;-)

Agora, eu acho que o wget com a opção --mirror faz isso
automaticamente, seria bom investigar.

O curl tem a opção -z que pode ser util no seu caso:

$ man curl
...
 -z/--time-cond <date expression>
        (HTTP/FTP)  Request a file that has been modified later than the
        given time and date, or one that has been modified  before  that
        time. The date expression can be all sorts of date strings or if
        it doesn't match any internal ones, it tries  to  get  the  time
        from  a  given  file  name  instead! See the curl_getdate(3) man
        pages for date expression details.

        Start the date expression with a dash (-) to make it request for
        a  document that is older than the given date/time, default is a
        document that is newer than the specified date/time.

        If this option is used several times, the last one will be used.
...

Enfim, wget, curl ou lynx, de uma olhada nas opções que a resposta
sai, são programas muito completos nesse sentido, tem um man gigante,
mas são perfeitos pra esse tipo de tarefa.


2008/5/25 Paulo Roberto Bagatini <address@hidden>:
> Holla Lista :-)
>
> Eu quero automatizar a verificacao de novas versoes para varios arquivos
> de aplicativos que eu baixo da Internet, sejam .exe, .iso, .bin, o que for.
>
> Basicamente, quero informar a url completa, transformando as partes
> especificas de versao em mascaras de expressao regular.
>
> Ex:
>
> <http://releases.mozilla.org/pub/mozilla.org/calendar/sunbird/releases/0.8/linux-i686/pt-BR/sunbird-0.8.pt-BR.linux-i686.tar.gz>
>
> ficaria
>
> <http://releases.mozilla.org/pub/mozilla.org/calendar/sunbird/releases/[[:alnum:].]+/linux-i686/pt-BR/sunbird-[[:alnum:].]+.pt-BR.linux-i686.tar.gz>
>
> Entao, o script verifica, pela data de modificacao do arquivo no site se
> eh mais novo que o que eu tenho. Se eh, baixa, move o velho para um
> determinado local de recuperacao e envia email avisando que tem nova
> versao. Se ele nao conseguir decidir se ha ou nao uma nova versao
> (mascara ER mal feita), ou se a url de download mudou, ele manda email
> avisando.
>
> Vejam que eu nao quero manter um mirror do site. Quero apenas baixar um
> arquivo especifico dentre varios arquivos de um diretorio remoto, seja
> http ou ftp. Isso impede que eu use a opcao de mirror do wget, por ex.
>
> Aparentemente eh algo simples de se fazer:
>
> Um 'lynx -dump -listonly $path | <varios filtros>' lista os arquivos do
> diretorio, e um loop neles com 'lynx -dump -head $path/$file | <varios
> filtros>' me permite obter a data de modificacao.
>
> O problema aparece quando a url tem uma parte variavel no proprio
> diretorio, alem do arquivo final, como no ex acima. Eu precisaria,
> primeio, verificar qual diretorio eh o mais novo, e entao sim, verificar
> dentro dele, qual o arq mais novo.
>
> So que, 'lynx -dump -head $path/' muitas vezes nao retorna nos headers
> http o campo last-modified. No ex, acima, pelo que pude observar, apenas
> um dos servidores retorna (releases.mozilla.org aponta para varios ip's)
>
> Entao, se eu fui claro na minha esplanacao, eu gostaria de saber se
> alguem tem alguma sugestao...
>
> Grato,
>
> --
> ------------------------ __o address@hidden ----.-----------
> P@ulo Roberto Bagatini _`\<, www.ceat.net/~arkanon \
> -=---=---==---=---=- (_)/(_) Phone +55 51 3748 7000 `--------
> Lajeado - RS - Brasil --------- ICQ 34 789 30 - LinuxUser 102.514
> ----------------------------------------------------------
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]