A imagem de verificação do Linux existe no URL do Apache

0

Estou escrevendo um programa que usa um comando do Linux para verificar se um arquivo existe no servidor local.

O programa executa um comando com um argumento fornecido

ls *ARG_GOES_HERE* &> /dev/null

e, em seguida, verifica o status, se foi capaz de encontrar o arquivo ou não.

O problema é que às vezes o arquivo não é direto encaminhar caminho como

/var/www/html/images/myImage.jpg

Às vezes, o local da imagem é armazenado usando o local da web

http://192.168.1.2/images/myImage.jpg

Que falha no comando linux.

É possível verificar se existe uma imagem em um apache local localização usando bash?

    
por Trent 14.06.2016 / 10:09

1 resposta

2

Você pode usar o comando curl para verificar se o arquivo existe e pode ser acessado via HTTP. Algo como isso deve funcionar para você:

path_to_file=images/myImage.jpg
if curl --head --location --silent --fail "http://192.168.1.2/$path_to_file" > /dev/null
then
    printf "%s exists\n" "$path_to_file"
else
    printf "%s does not exist\n" "$path_to_file"
fi

As seguintes opções curl são usadas:

  • --head - obtém apenas os cabeçalhos HTTP (não é necessário o corpo)
  • --location - siga os redirecionamentos HTTP
  • --silent - não mostra o medidor de progresso nem as mensagens de erro
  • --fail - os comandos curl falham com um status de erro se a solicitação HTTP falhar, por exemplo, se o servidor da Web respondeu com um 404, os comandos curl saem com um status de 22 (erro) em vez de 0 ).
por 14.06.2016 / 13:06