Celui-ci repose sur une diffusion largement disponible wget
, présente presque partout, même sur Alpine Linux.
wget --server-response --spider --quiet "${url}" 2>&1 | awk 'NR==1{print $2}'
Les explications sont les suivantes:
--quiet
Désactivez la sortie de Wget.
Source - pages de manuel wget
--spider
[...] il ne téléchargera pas les pages, il suffit de vérifier qu'elles sont là. [...]
Source - pages de manuel wget
--server-response
Imprimez les en-têtes envoyés par les serveurs HTTP et les réponses envoyées par les serveurs FTP.
Source - pages de manuel wget
Ce qu'ils ne disent pas, --server-response
c'est que ces en-têtes sont affichés en erreur standard (sterr) , d'où la nécessité de rediriger vers stdin.
La sortie envoyée à l'entrée standard, nous pouvons la diriger vers awk
pour extraire le code d'état HTTP. Ce code est:
- le deuxième (
$2
) groupe de caractères non vide:{$2}
- sur la toute première ligne de l'en-tête:
NR==1
Et parce que nous voulons imprimer ... {print $2}
.
wget --server-response --spider --quiet "${url}" 2>&1 | awk 'NR==1{print $2}'