Interroger des url via curl sur plusieurs serveurs

Logo Culr

Obtenir l’@IP publique ou interne de vos serveurs

 

Efficace si tous vos noms de serveurs ont le même préfixes.

#!/bin/sh

PREFIX_SERVER='server';
DOMAIN="mydomain.com"

for i in ` seq -w 01 20 `; do 

	IP=`host $PREFIX_SERVER$i.$DOMAIN | awk '/has address/ { print $4 }'`
	if [ $IP ]; then
		echo "Get ip for $PREFIX_SERVER$i == $IP"
	fi
done

Curl @IP publique/interne serveur

 

Tester une URL sur différents serveurs

 

Le script suivant permet de tester une URL (mydomain.com/something/) sur chacun des serveurs identifiés par un PREFIX_SERVER suivi d’un numéro (server01,…).
Il vous suffit de changer les 3 premières variables.

#!/bin/sh

DOMAIN='mydomain.com';
HOST='host.mydomain.com';
PREFIX_SERVER='server';
URL="http://$HOST/test.html"

echo "Test de $URL"
echo ""
for i in ` seq -w 01 20 `; do 
	IP=`host $PREFIX_SERVER$i.$DOMAIN | awk '/has address/ { print $4 }'`
	if [ $IP ]; then
		echo "$PREFIX_SERVER$i"
		curl -s -I --resolve $HOST:80:$IP $URL
	fi

done | grep "${PREFIX_SERVER}\|HTTP/1.1"

Il tout à fait possible de supprimer le grep final pour afficher l’ensemble des headers retournés.

Curl tester une url sur différent serveur

 

Tester plusieurs URL

 

Ce script permet de tester plusieurs URL afin d’obtenir le code de retour de celle ci. On peut également obtenir l’ensemble des headers. L’optention des headers se fait grâce à l’option -I, qui est filtré par la commande grep.

#!/bin/sh

echo "mydomain.com/azerty/
mydomain.com/test_2/" > list_url.txt

while read ligne  
do  
		echo == $ligne
	  	curl -sL -o /dev/null -w "%{http_code}\n" $ligne 
	  	curl -s -I $ligne | grep -v Access | grep Age: 
	  echo ""
done < list_url.txt
rm list_url.txt;

Curl obtenir http_code d'une url

Si vous n’avez pas l’utilité d’afficher les headers vous pouvez tout simplement utiliser la commande xargs comme suivant

#!/bin/sh

echo "mydomain.com/azerty/
mydomain.com/test_2/" > list_url.txt

cat list_url.txt | xargs -n1 -i curl -o /dev/null -w "%{url_effective}\n%{http_code}\n%{time_total} \n\n" -s {}

Curl obtenir http_code et temps de chargement d'une page

Explication des options de curl
-s : Ne pas afficher la progression
-L : suivre les redirection
-o : rediriger la sortie de curl vers /dev/null
-w : afficher un rapport dans un format custom

Liste de toutes les variables custom disponible :

  • url_effective
  • http_code
  • http_connect
  • time_total
  • time_namelookup
  • time_connect
  • time_pretransfer
  • time_redirect
  • time_starttransfer
  • size_download
  • size_upload
  • size_header
  • size_request
  • speed_download
  • speed_upload
  • content_type
  • num_connects
  • num_redirects
  • ftp_entry_path

Script final

J’ai fait un petit script avec l’ensemble de ces fonctions. Il suffit de remplacer les variables au début du fichier de le lancer avec un

bash ./curl.sh

Télécharger le script