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.