Newsgroup: it.comp.os.linux.iniziare
Titolo: testare pagina con curl

$ curl -s 
http://nas:8085/
 > /dev/null && echo OK
OK
 
Quindi secondo curl è tutto ok, ma siccome non ci si può mai fidare 
vediamo cosa dice wget
 
$ wget -p "
http://nas:8085/
" -O /dev/null && echo OK
..........
Connessione a nas (nas)|192.168.1.120|:8085... connesso.
Richiesta HTTP inviata, in attesa di risposta... 403 Forbidden
2017-11-17 11:23:05 ERRORE 403: Forbidden.
 
Ecco qua... ho fatto bene a dubitare di curl...
Ma perchè l'errore 403 non lo rileva?
Forse non rileva neanche altri tipi di errore...
C'è un modo per rendere curl più affidabile?

 OK
 
Mh..ma -s non è silent?
 
bye

-- 
"Non esiste alcun dio, ma non ditelo al mio domestico,
se no di notte viene ad uccidermi."  - Voltaire

 Mh..ma -s non è silent?
 
$ curl 
http://nas:8085/
 > /dev/null
   % Total    % Received % Xferd  Average Speed   Time    Time     Time 
Current
                                  Dload  Upload   Total   Spent    Left 
Speed
100   328  100   328    0     0  22121      0 --:--:-- --:--:-- --:--:-- 
23428
 
 
 
Vabè ma a me comunque interessa verificare il codice di uscita
 
 
$ echo $?
0
 
OK, secondo lui tutto va bene, boh :-(


Quello che intendevo è che col --silent
non ti mostra i messaggi d'errore.
 
--silent
               Silent  or  quiet  mode. Don't show progress meter or 
error messages.  Makes Curl mute. It will still output the data you ask 
for, potentially
               even to the terminal/stdout unless you redirect it.



Il web server non permette l'accesso a "
http://nas:8085/
" e ritorna una 
pagina che contiene l'errore.
 
curl riceve il messaggio e lo passa sull'output; per il programma è 
tutto OK.
 
wget riceve lo stesso messaggio e, oltre a passarlo sull'output, lo 
interpreta.
 
Prova a verificare cosa ricevono e troverai che riportano lo stesso 
messaggio.
$ curl  
http://nas:8085/
 
$ wget -p "
http://nas:8085/
" -O -	##  redirige al terminale
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >


Io uso questa funzione con bash che ritorna true se l'url risponde e risposnde con il codice
di stato HTTP atteso:
 
# Test if the given URL works and returns the expected status code.
# Arguments:
# $1: URL
# $2: expected HTTP status code.
# Return: 0 = ok, 1 = err.
function testUrl()
{
	local code
	code=$(curl -s -w "%{http_code}" $1 -o /dev/null)
	if [ "$code" != "$2" ]; then
		echo "testUrl $1 $2: got $code"
		return 1
	elsif
		#echo "testUrl $1 $2: succeeded"
		return 0
	fi
}
 
err=0
 
testUrl 
www.sito1.it
 200 || err=1
testUrl 
www.sito1.it/non-esiste
 404 || err=1
testUrl 
www.sito2.it
 200 || err=1
testUrl 
www.sito3.it
 301 || err=1
 
if [ $err -eq 0 ]; then
	echo ok
else
	echo ERROR
fi
 
 
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it
 
 

 $ wget -p "
http://nas:8085/
" -O -    ##  redirige al terminale
 
a questo punto mi converrebbe più wget

 Ma perchè l'errore 403 non lo rileva?
 
 
 
https://curl.haxx.se/libcurl/c/CURLOPT_FAILONERROR.html
 
 
 


 
Vedi che vorse dovevi prendere l'espressione con un po' di ironia, e cmq 
sono qui proprio per capire come funzionano le cose, e cercare di 
risolvere il problema.
 


Anche questo mi sembra un buon codice, domani lo testerò.