Obter hora de modificação do arquivo remoto via HTTP no script Bash

8

Estou criando um script Bash simples para extrair a data / hora de modificação do arquivo de um arquivo remoto via HTTP.

Arquivo de exemplo: http://example.com/bar/example.pdf

Isso pode ser feito sem fazer o download do arquivo real? Se não, qual é a melhor alternativa?

    
por Amal Murali 14.07.2013 / 11:21

2 respostas

10

Para ser honesto, não diretamente.

Você terá que buscar dados do site remoto para obter informações sobre o arquivo. Geralmente isso é feito com uma solicitação de HEAD , mas alguns servidores (a maioria deles) não implementaram corretamente e entregam o arquivo inteiro, assim como fazer uma solicitação GET . Supondo que você tenha curl instalado:

curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'

pode fornecer o que você deseja, mas, como foi dito, depende muito do servidor.

    
por 14.07.2013 / 11:30
4

A resposta do servidor geralmente tem Last-Modified campo, você pode verificá-lo sem baixar o arquivo. Não é necessário usar -X HEAD , há uma opção especial -I para isso (o -s suprime a saída do progresso) :

curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified

Além disso, no meu caso, não há um curl instalado (estou fazendo um script para um dispositivo incorporado) , apenas wget . O caminho com o wget é:

wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified

O --server-response imprime cabeçalhos e a opção --spider força o não download de páginas, mas sim a verificação da existência deles.

    
por 26.10.2015 / 09:13

Tags