X

Interroger des url via curl sur plusieurs serveurs

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

 

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.

 

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;

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 {}

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


Cet article a été modifié le 7 février 2017 14:26

Articles relatifs