Je dois effectuer un traceroute TCP en utilisant soit le traceroute Linux, soit un autre paquet, mais j'ai du mal à trouver le moyen de faire la requête depuis PHP sans avoir besoin de privilèges sudo.
Parce que l'URL proviendra d'une requête utilisateur, je ne souhaite pas utiliser sudo.
Voici un exemple:
$url = 'ebay.com';
$exec = 'sudo traceroute -w 1 -q 1 -T ' . $url;
$escaped_command = escapeshellcmd($exec);
$result = shell_exec($escaped_command);
echo $result;
var_dump($result);
Ce code fonctionne, mais seulement avec sudoou sans -T. Sans sudocela, il retourne une chaîne vide. Sans -Tle traceroute ne survit pas aux pare-feu.
Si cela peut aider, je suis sur un OS Centos 7.
Remarque: je ne peux pas utiliser UDP au lieu de TCP car il est souvent bloqué par le pare-feu de destination.
-Test l'abréviation de -M tcpet cette méthode est décrite comme utilisant des connexions semi-ouvertes par défaut et nécessite donc un accès root. Il n’est pas écrit explicitement dans la page de manuel, mais rien n’est écrit sur les autorisations nécessaires. Probablement avec l'option (explicitement non recommandée), tcpconnil n'aura pas besoin de root car il s'agit d'une opération simple connect.
-T