Obtendo o endereço URL do arquivo e verifique o código HTTP

1

Estou criando um script bash para verificar qual código HTTP um determinado URL está retornando. Eu tenho arquivo com cerca de 50k de URLs no formato JSON; é o primeiro (chefe de arquivo):

"responseHeader":{
    "status":0,
    "QTime":7336},
  "response":{"numFound":50032,"start":0,"maxScore":1.0,"docs":[
      {
        "documentURL":"http....."},

    and so on

Eu preciso fazer um loop sobre esse arquivo, verificar qual código HTTP está retornando cada URL e salvá-lo em outro arquivo no formato código HTTP + URL. Até agora eu tenho apenas essa onda comando para verificar o código http

  curl -s -o /dev/null -I -w "%{http_code}\n" URL >> httpCodeFile 

Gostaria de receber ajuda e conselhos sobre quais ferramentas / aproach (grep, awk, sed) eu deveria usar.

Eu criei esta função para obter o URL do arquivo, mas tenho certeza da sintaxe:

function checkHTTP(){



        cat URL_list | while read line
        do
                var =  $(grep documentURL) URL_list

                curl -s -o /dev/null -I -w "%{http_code}\n" ${var} +  " TEST "  >> httpCodeFile


        done
}

Estou obtendo apenas 000, apesar de muitos URLs devolverem 404.

    
por SeSa 24.01.2018 / 08:51

1 resposta

1

O caminho certo com a solução jq + curl :

Amostra válida input.json :

{
  "responseHeader": {
    "status": 0,
    "QTime": 7336
  },
  "response": {
    "numFound": 50032,
    "start": 0,
    "maxScore": 1,
    "docs": [
      {
        "documentURL": "https://unix.stackexchange.com/questions"
      },
      {
        "documentURL": "https://unix.stackexchange.com/problems"
      },
      {
        "documentURL": "https://stackoverflow.com/questions"
      },
      {
        "documentURL": "https://stackoverflow.com/issues"
      }
    ]
  }
}

Processamento:

jq -r '.response.docs[].documentURL 
       | "curl -s -o /dev/null -I -w \"%{http_code} \(.)\n\" --url \(.)"' input.json \
       | sh > http_codes.out

O conteúdo http_codes.out resultante:

$ cat http_codes.out 
200 https://unix.stackexchange.com/questions
404 https://unix.stackexchange.com/problems
200 https://stackoverflow.com/questions
404 https://stackoverflow.com/issues
    
por 24.01.2018 / 10:23