[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"
- HTTP Last-Modified, Paulo Roberto Bagatini, 2008/05/25
- Re: [shell-script] HTTP Last-Modified,
Tiago Barcellos Peczenyj <=