¿Cómo obtener una respuesta desde cualquier URL?

23

Me han pedido que escriba un script de shell Para verificar si una URL está ARRIBA / Funcionando o no para mi Proyecto.

Traté de encontrar algunas sugerencias en Internet, pero lo que obtuve es verificar si la URL existe o no.

Primero lo intenté con 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

Mi siguiente intento fue con 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

Pero, ambos están comprobando la existencia de la URL, no la respuesta.

Akash
fuente
1
Acabo de echar un vistazo rápido al curl man y parece sugerir que si usa --fail flag, devolverá un código de salida de 22 en lugar de devolver una página que diga sobre el problema, por lo que solo '200 OK' dará un valor de retorno de 0.
Guy

Respuestas:

20

curl -Is http://www.yourURL.com | head -1Puede probar este comando para verificar cualquier URL. El código de estado 200 OKsignifica que la solicitud se ha realizado correctamente y se puede acceder a la URL.

También puede probar la disponibilidad de URL y obtener el código de respuesta con el telnetcomando

telnet www.yourURL.com 80

80 es el número de puerto.

Thushi
fuente
Gracias por compartir. Intenté esto también, pero creo que esto también está comprobando solo la existencia. $ sh q.sh URL para verificar: google.com/akash google.com/akash existe pero esto está dando error en el navegador :: 404. Eso es un error.
Akash
@ Akash: ¿Puede acceder a ese enlace a través de su navegador?
Thushi
si este es el enlace que está hablando--www.google.com/akash-- entonces NO-- Me da un error :: "404-not found"
Akash
Sí, si esa URL no existe, entonces debería :) ¿Qué más esperas?
Thushi
Pero, me está dando - que existe ... A continuación se muestra el código :: $ vi q.sh #! / Bin / ksh echo "da tu url" lee url curl -ls "& url" | cabeza -1 si [$? -eq 0] luego echo "Existir", si no echo "No existe" fi Cuando ejecuto esto :: $ sh q.sh ingrese su URL www.google.com/akash Exist pero debería ir a ELSE ..
Akash
5

Puedes hacer lo siguiente

#!/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

Sin ifembargo, las declaraciones no son necesarias, las puse aquí solo para ilustrar el flujo del guión.ingrese la descripción de la imagen aquí

Valentin Bajrami
fuente
Lo intenté y no me está dando los resultados esperados.
Akash
$ sh q.sh URL para verificar: www.google.com% s \ n www.google.com no existe
Akash
@ Akash Ver la respuesta actualizada. No pongas una extensión a tu script. También ejecutarlo solo por ./checkURL. Espero que ayude
Valentin Bajrami
Lo necesito para el propósito del proyecto ... piensa- no tienes acceso para ejecutarlo así ... :(
Akash
¿Qué %s\n pones ahí? en tu comentario? ¿Propósito del proyecto? Debería ser más específico de lo que está tratando de lograr.
Valentin Bajrami
1

Lo siguiente funcionó para mí ...

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

Traté de lo que escribió @THUSHI.

Abhishek Tiwari
fuente
0

Si usa pingla URL, eso también le dará una respuesta

ping -c 5 www.google.com

Donde -ccontará hasta que expire el tiempo de espera de 5.

A la luz de lo que me han aconsejado, nmappuede funcionar si tiene su paquete instalado en su sistema. curlsería una mejor opción, pero no obstante aquí hay un ejemplo usando nmap:

nmap -p 80 -sT www.google.com

ryekayo
fuente
pingenvía un ICMPmensaje y definitivamente no usa puerto 80o 443. Además, algunos servidores bloquean las solicitudes de ping, lo que hace que el intento no sea confiable.
Valentin Bajrami
También puede hacer ping a los puertos. Presentaré un ejemplo de hacer ping a un puerto en un sitio web usando nmap
ryekayo
nmap -p 80 -sT www.google.com hará ping al puerto 80. Editaré mi respuesta en breve cuando tenga acceso a mi PC
ryekayo
1
nmapnuevamente es un paquete no predeterminado en muchos sistemas * nix. curles más común enviado con el sistema base. Aún necesitaría instalar nmappara lograr algo que se puede lograr con las herramientas estándar * nix.
Valentin Bajrami
1
Entendido, gracias por la información.
Actualicé
0

La mayoría de las veces curl no funciona en https si desea verificar, puede verificar a través de "curl --version" , no verá la opción https en ese caso, puede usar a continuación

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

Yanish Pradhananga
fuente
-2
status="curl \"${server}:${port}\""  >/tmp/tmp.txt
host_check='grep "<html" /tmp/tmp.txt'
Gyanesh Gupta
fuente