Como obter uma resposta de qualquer URL?


23

Pediram-me para escrever um script de shell. Para verificar se um URL está ativo / ativo ou não para o meu projeto.

Tentei encontrar algumas dicas pela internet, mas o que eu consegui é verificar se o URL existe ou não.

Eu tentei pela primeira vez wget.

wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^  /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

Minha próxima tentativa foi com curl.

curl -ivs  https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

Mas, ambos estão verificando a existência do URL e não a resposta.


1
Acabei de dar uma olhada rápida no curl man e parece sugerir que se você usar --fail flag, ele retornará um código de saída 22 em vez de retornar uma página dizendo sobre o problema, então apenas '200 OK' fornecerá um valor de retorno de 0.
Guy

Respostas:


20

curl -Is http://www.yourURL.com | head -1Você pode tentar este comando para verificar qualquer URL.Status code 200 OKsignifica que a solicitação foi bem-sucedida e a URL está acessível.

Você também pode testar a disponibilidade da URL e obter o código de resposta usando o telnetcomando

telnet www.yourURL.com 80

80 é o número da porta.


Obrigado por compartilhar. Tentei isso também, mas acho que isso também está verificando apenas a existência. URL $ sh q.sh para verificar: google.com/akash google.com/akash existe, mas isso está causando erro no navegador :: 404. Isso é um erro.
Akash

@ Akash: Você pode acessar esse link através do seu navegador?
Thushi 8/08/14

se este é o link ur talking--www.google.com/akash--then Não-- Ele está me dando um erro :: "404-não encontrado"
Akash

Sim, se esse URL não existe, então deveria :) O que mais você está esperando ???
Thushi 8/08/14

Mas- está me dando - que existe .. Abaixo está o código :: $ vi q.sh #! / Bin / ksh echo "dê sua url" leia url curl -ls "& url" | cabeça -1 se [$? -eq 0] echo "Exist" else echo "Não existe" fi Quando executo: $ sh q.sh, forneça seu URL www.google.com/akash Exist, mas ele deve ir para ELSE ..
Akash

5

Você pode fazer o seguinte

#!/bin/bash

read -p "URL to check: " url
if curl --output /dev/null --silent --head --fail "$url"; then
  printf '%s\n' "$url exist"
else
  printf '%s\n' "$url does not exist"
fi

As ifdeclarações não são necessárias, eu as coloquei aqui apenas para ilustrar o fluxo do script.insira a descrição da imagem aqui


Eu tentei isso e não está me dando os resultados esperados.
Akash

URL $ sh q.sh para verificar: www.google.com% s \ n www.google.com não existe
Akash

@ Akash Veja a resposta atualizada. Não coloque uma extensão no seu script. Também execute-o apenas por ./checkURL. Espero que ajude
Valentin Bajrami

Necessita-lo para o Projeto-Purpose .. pense- não tem acesso para executá-lo assim .. :(
Akash

O que %s\n você colocou lá? no seu comentário? Objetivo do projeto? Você deve ser mais específico do que está tentando realizar.
Valentin Bajrami

1

Seguinte coisa funcionou para mim ....

status="$(curl -Is http://www.google.com | head -1)"
validate=( $status )
if [ ${validate[-2]} == "200" ]; then
  echo "OK"
else
  echo "NOT RESPONDING"
fi

Eu tentei com o que @THUSHI escreveu.


0

Se você for pingo URL, isso também fornecerá uma resposta

ping -c 5 www.google.com

Onde -ccontará até o tempo limite de 5 expirar.

À luz do que fui avisado, nmappode funcionar se você tiver o pacote instalado no seu sistema. curlseria uma opção melhor, mas, no entanto, aqui está um exemplo usando nmap:

nmap -p 80 -sT www.google.com


pingenvia uma ICMPmensagem e definitivamente não usa port 80or 443. Além disso, alguns servidores bloqueiam solicitações de ping, o que ainda torna a tentativa não confiável.
Valentin Bajrami

Você também pode executar ping nas portas. Vou apresentar um exemplo de ping uma porta em um site usando nmap
ryekayo

nmap -p 80 -sT www.google.com vai pingar porta 80. Vou editar a minha resposta logo quando eu tenha acesso ao meu PC
ryekayo

1
nmapnovamente é um pacote não padrão em muitos sistemas * nix. curlé mais comum enviado com o sistema básico. Você ainda precisa instalar nmappara conseguir algo que pode ser alcançado com as ferramentas * nix padrão.
Valentin Bajrami

1
Entendido, obrigado pela informação. Eu atualizei a minha resposta
ryekayo

0

Na maioria das vezes, o curl não funciona em https. Se você deseja verificar, pode verificar "curl --version"; você não verá a opção https; nesse caso, você pode usar abaixo

wget --post-data '{"name":"Radha", "Car": "Jaquar"}' --header "Content-Type: application/json" --no-check-certificate https://yourrequiredURI


-2
status="curl \"${server}:${port}\""  >/tmp/tmp.txt
host_check='grep "<html" /tmp/tmp.txt'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.