Come ottenere una risposta da qualsiasi URL?


23

Mi è stato chiesto di scrivere uno script della shell per verificare se un URL è attivo / funzionante o meno per il mio progetto.

Ho cercato di trovare alcuni suggerimenti su Internet, ma quello che ho ottenuto è controllare se l'URL esiste o meno.

Ho provato per la prima volta 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

Il mio prossimo tentativo fu 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

Ma entrambi stanno verificando l'esistenza dell'URL e non la risposta.


1
Ho appena dato una rapida occhiata al curl man e sembra suggerire se usi --fail flag restituirà un codice di uscita di 22 anziché restituire una pagina che dice del problema, quindi solo '200 OK' darà un valore di ritorno di 0.
Guy,

Risposte:


20

curl -Is http://www.yourURL.com | head -1Puoi provare questo comando per controllare qualsiasi codice URL.Status 200 OKsignifica che la richiesta è riuscita e che l'URL è raggiungibile.

Puoi anche testare la disponibilità degli URL e ottenere il codice di risposta usando il telnetcomando

telnet www.yourURL.com 80

80 è il numero di porta.


Grazie per la condivisione. Ho provato anche questo, ma penso che questo stia anche verificando solo l'esistenza. $ sh q.sh URL da verificare: google.com/akash google.com/akash esiste ma questo sta dando errore nel browser :: 404. Questo è un errore.
Akash,

@Akash: riesci ad accedere a quel link tramite il tuo browser?
Thushi,

se questo è il link che stai parlando--www.google.com/akash-- quindi NO-- Mi sta dando un errore :: "404-not found"
Akash

Sì, se quell'URL non esiste allora dovrebbe :) Cos'altro ti aspetti ???
Thushi,

Ma- mi sta dando - che esiste .. Di seguito è riportato il codice :: $ vi q.sh #! / Bin / ksh echo "dai il tuo url" leggi url curl -ls "& url" | testa -1 se [$? -eq 0] quindi echo "Esisti" altrimenti echo "Non esiste" fi Quando eseguo questo :: $ sh q.sh invia il tuo URL www.google.com/akash Esisti ma dovrebbe andare su ELSE ..
Akash

5

Puoi fare quanto segue

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

Le ifdichiarazioni non sono necessarie però, le ho messe qui solo per illustrare il flusso della sceneggiatura.inserisci qui la descrizione dell'immagine


ho provato questo e non mi sta dando risultati attesi.
Akash,

$ sh q.sh URL da verificare: www.google.com% s \ n www.google.com non esiste
Akash

@Akash Vedi la risposta aggiornata. Non aggiungere un'estensione alla tua sceneggiatura. Anche eseguirlo solo da ./checkURL. Spero che sia d'aiuto
Valentin Bajrami,

Ne ho bisogno per Project-Purpose .. think- non ho accesso per eseguirlo in quel modo .. :(
Akash

Cosa %s\n ci metti lì? sul tuo commento? Project-Purpose? Dovresti essere più specifico di ciò che stai cercando di realizzare.
Valentin Bajrami,

1

La seguente cosa ha funzionato per me ....

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

Ho provato da quello che ha scritto @THUSHI.


0

Se sei pingl'URL, anche questo ti darà una risposta

ping -c 5 www.google.com

Dove -cconterà fino alla scadenza del timeout di 5.

Alla luce di ciò che mi è stato consigliato, nmappotrebbe funzionare se hai il pacchetto installato sul tuo sistema. curlsarebbe un'opzione migliore, ma comunque ecco un esempio usando nmap:

nmap -p 80 -sT www.google.com


pinginvia un ICMPmessaggio e sicuramente non usa la porta 80o 443. Inoltre alcuni server bloccano le richieste di ping, il che rende il tentativo inaffidabile.
Valentin Bajrami,

Puoi anche eseguire il ping delle porte.
Presenterò

nmap -p 80 -s www.google.com eseguirà il ping della porta 80. A breve modificherò la mia risposta quando avrò accesso al mio PC
ryekayo,

1
nmapè di nuovo un pacchetto non predefinito in molti sistemi * nix. curlè più comune spedito con il sistema di base. Dovresti comunque installare nmapper ottenere qualcosa che può essere raggiunto con gli strumenti * nix standard.
Valentin Bajrami,

1
Capito, grazie per le informazioni. Ho aggiornato la mia risposta
ryekayo il

0

La maggior parte delle volte l'arricciatura non funziona su https se vuoi controllare puoi controllare attraverso "curl --version" non vedrai l'opzione https in quel caso che puoi usare sotto

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'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.