Wie erhalte ich eine Antwort von einer URL?


23

Ich wurde gebeten, ein Shell-Skript zu schreiben, um zu überprüfen, ob eine URL für mein Projekt UP / Working ist oder nicht.

Ich habe versucht, einige Hinweise über das Internet zu finden, aber ich habe immer überprüft, ob die URL existiert oder nicht.

Ich habe es zuerst mit versucht 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

Mein nächster Versuch war mit 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

Beide überprüfen jedoch die Existenz der URL und nicht die Antwort.


1
Ein kurzer Blick auf den Curl-Mann zeigt, dass bei Verwendung des Flags --fail der Exit-Code 22 zurückgegeben wird, anstatt eine Seite mit einem Hinweis auf das Problem zurückzugeben. Daher gibt nur '200 OK' einen Rückgabewert zurück von 0.
Guy

Antworten:


20

curl -Is http://www.yourURL.com | head -1Mit diesem Befehl können Sie eine URL überprüfen. Der Statuscode 200 OKbedeutet, dass die Anforderung erfolgreich war und die URL erreichbar ist.

Sie können auch die URL-Verfügbarkeit testen und den Antwortcode mit dem telnetBefehl abrufen

telnet www.yourURL.com 80

80 ist die Portnummer.


Danke für das Teilen. Versuchte dies auch, aber ich denke, das überprüft auch nur die Existenz. $ sh q.sh Zu überprüfende URL: google.com/akash google.com/akash ist vorhanden, dies führt jedoch zu einem Fehler in browser :: 404. Das ist ein Fehler.
Akash

@Akash: Können Sie über Ihren Browser auf diesen Link zugreifen?
Thushi

Wenn dies der Link ist ur talking--www.google.com/akash--then NO-- Es gibt mir einen Fehler :: "404-not found"
Akash

Ja, wenn diese URL nicht existiert, sollte sie es sein :) Was erwarten Sie noch ???
Thushi

Aber - es gibt mir - dass es existiert. Unten ist der Code: $ vi q.sh #! / Bin / ksh echo "gib deine url" lies url curl -ls "& url" | Kopf -1 wenn [$? -eq 0] dann echo "Exist" sonst echo "Existiert nicht" fi Wenn ich das ausführe :: $ sh q.sh gib deine URL www.google.com/akash Exist an, aber es sollte zu ELSE gehen ..
Akash

5

Sie können Folgendes tun

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

Die ifAnweisungen sind jedoch nicht erforderlich, ich habe sie hier nur zur Veranschaulichung des Ablaufs des Skripts abgelegt.Bildbeschreibung hier eingeben


Ich habe es versucht und es gibt mir nicht die erwarteten Ergebnisse.
Akash

$ sh q.sh URL zu überprüfen: www.google.com% s \ n www.google.com existiert nicht
Akash

@Akash Siehe die aktualisierte Antwort. Fügen Sie Ihrem Skript keine Erweiterung hinzu. Führen Sie es auch einfach durch ./checkURL. Hoffe, es hilft
Valentin Bajrami

Brauchen Sie es für Projekt-Zweck .. denken Sie, haben Sie keinen Zugriff, um es so auszuführen .. :(
Akash

Was steckst %s\n du da? auf deinen Kommentar? Projektziel? Sie sollten genauer angeben, was Sie erreichen möchten.
Valentin Bajrami

1

Folgendes hat bei mir funktioniert ...

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

Ich habe versucht, was @THUSHI schrieb.


0

Wenn Sie pingdie URL eingeben, erhalten Sie auch eine Antwort

ping -c 5 www.google.com

Woher -c wird gezählt, bis das Timeout von 5 abläuft.

In Anbetracht dessen, was mir empfohlen wurde, nmapfunktioniert es möglicherweise, wenn das Paket auf Ihrem System installiert ist. curlwäre eine bessere Option, aber trotzdem ist hier ein Beispiel mit nmap:

nmap -p 80 -sT www.google.com


pingSendet eine ICMPNachricht und benutzt definitiv nicht port 80oder 443. Einige Server blockieren auch Ping-Anfragen, was den Versuch immer noch unzuverlässig macht.
Valentin Bajrami

Sie können auch Ports anpingen. Ich werde ein Beispiel für das Pingen eines Ports auf einer Website mit nmap
ryekayo

nmap -p 80 -sT www.google.com pingt Port 80 an. Ich bearbeite meine Antwort in Kürze, wenn ich Zugriff auf meinen PC
erhalte

1
nmapAuch dies ist ein nicht standardmäßiges Paket in vielen * nix-Systemen. curlwird häufiger mit dem Basissystem ausgeliefert. Sie müssen noch installieren nmap, um etwas zu erreichen, das mit Standard * nix-Tools erreicht werden kann.
Valentin Bajrami

1
Verstanden, danke für die Info. Ich habe meine Antwort aktualisiert
ryekayo

0

In den meisten Fällen funktioniert Curl nicht mit https. Wenn Sie überprüfen möchten, ob Sie die Option "Curl - Version" aktivieren , wird die Option https nicht angezeigt. In diesem Fall können Sie die Option unten verwenden

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'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.