2
2011
[Script] Quick DNS Check, par Beunwa
La semaine dernière j’ai dû installer un réseau WordPress (50 IP + 50 ndd) avec domain mapping et j’ai été confronté à un problème vicieux.
En effet, les nom de domaine avaient tous une configuration DNS complètement différente, du .fr, du vieux domaine, du domaine parqué, du domaine pointant sur un autre hébergement, leur seul point commun était d’être tous enregistré chez OVH.
LÃ je me suis dis cool, je vais pouvoir tout faire d’un coup, mais que neni chez OVH on ne pratique pas le Bulk Action
J’ai donc commencé à vérifier les configurations DNS des noms de domaine un par un (en twittant en même temps parce que hein !) et je me suis rendu compte que quelques-uns avaient la bonne configuration.
Pour gagner du temps j’ai donc cherché dans la doc php un truc magique et j’ai trouvé « dns_get_record », je me suis dit wouhou ca va m’épargner a l’aise 150 clics, tant pis si j’y passe une heure ça me resservira sûrement et je saurai directement sur quels domaines intervenir.
Voici donc un p’tit bout de code qui vous permettra de checker rapidement le statut http et les DNS (en fait le champ A et les champs NS uniquement) d’une liste de domaine.
Si vous n’avez pas de WPMU à installer avec domain mapping vous pourrez toujours utiliser ce tool pour vérifier si vos sites sont accessibles et ou ca déconne
Je repasse la main à Bertimus, merci pour cette tribune !
Beunwa, éleveur de bots
PS : J’ai pensé au feignant, vous pouvez mettre des pages profondes avec ou sans http dans l’interface ca marchera quand même.
PS2 : Si vous n’avez pas php5 ni phpcurl ça marchera beaucoup moins bien (en fait ça ne marchera pas du tout)
PS3 : C’est Bertimus qui assure le support
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr-fr">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Quick Dns Check</title>
</head>
<body>
<?php
function getUrl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after Ns
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_HEADER, 1);
$res = curl_exec( $ch );
$info = curl_getinfo($ch);
$error = curl_error($ch);
$pattern = "#META http-equiv=['|\"]Refresh['|\"] content=['|\"][0-9]+;url=(.*?)['|\"]#si";
if(preg_match($pattern, $res, $loc)) {
$url = $loc[1];
}else{
$url = $info['url'];
}
/*if(stristr($theRes, 'XML-RPC server accepts POST requests only.'))*/ return array($res, $info, $url, $error);
}
if(isset($_POST['txt'])){
$tab = preg_split('#(\n)#',$_POST['txt']);
foreach($tab as $u){
$u = trim($u);
if(substr($u, 0, 4) != 'http') $u = 'http://'.$u;
$u = parse_url($u);
$url = $u[scheme].'://'.$u[host];
$proc = getUrl($url);
$status = $proc[1]['http_code'];
echo '<br /><br />'.$u[host];
$dnscheck = dns_get_record($u[host], DNS_A + DNS_NS);
if(count($dnscheck) == 0){
echo '<br />Allo Houston on a un gros problème. AUCUN enregistrement DNS<br />';
echo 'Si c\'est un domaine en .fr il faut regarder du coté de l\'AFNIC, dans tous les cas du coté de votre registrar<br /><br />';
continue;
}
if($status != 200){
echo ' : code http : '.$status.' '.$proc[3].'<br />';
if(count($dnscheck) > 0) echo '<br />Si l\'ip A vous semble valide alors il va vous falloir chercher du coté de la configuration de votre serveur WEB<br /><br />';
//print_r($dnscheck);
}
foreach($dnscheck as $d){
$type = $d[type];
echo '<br /><b>'.$type.'</b> ';
if($type != 'A') echo $d[target];
else echo $d[ip];
}
}
}
?>
<h1>Quick Dns Check</h1>
<p>Collez votre liste d'url dans le champ texte ci-dessous et cliquez sur Go (homepages ou page profonde avec ou sans http)</p>
<form action="" method="post">
<textarea name="txt" style="width:300px;height:300px;"><?php echo $rt; ?></textarea>
<input type="submit" value="Go" />
</form>
</body>
</html>























Merci pour ce partage Benoît
Cela va beaucoup servir à mon avis.
J’ai oublié de préciser que les résultats donnent des indications globales sur la manière de traiter les problèmes (s’il y en a).
Par exemple contacter l’AFNIC ou votre registrar, ou encore mettre le nez dans la conf de votre serveur web.
Pour info, suivant la documentation PHP (http://php.net/manual/fr/function.dns-get-record.php), si on ne précise pas le type (2ème paramètre de la fonction), dns_get_record() va rechercher toutes les ressources associées au hostname.
Merci pour ce script.
OVH propose une API (http://www.ovh.com/soapi/fr/) qui permet de faire de nombreuses choses, y compris la configuration des DNS. Ca peut être une solution également…