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





