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