Devo ammettere che volevo vedere se qualcuno lo ha già fatto.
È possibile utilizzare il Net Framework per implementare un non-così-poveri-mans-traceroute come PowerShell script
Ecco un primer, che funziona veloce, ma pericoloso. Inoltre, nessuna statistica.
#
# Mid-Waged-Mans-Tracert
#
$ping = new-object System.Net.NetworkInformation.Ping
$timeout = 5000
$maxttl = 64
$address = [string]$args
$message = [System.Text.Encoding]::Default.GetBytes("MESSAGE")
$dontfragment = false
$success = [System.Net.NetworkInformation.IPStatus]::Success
echo "Tracing $address"
for ($ttl=1;$i -le $maxttl; $ttl++) {
$popt = new-object System.Net.NetworkInformation.PingOptions($ttl, $dontfragment)
$reply = $ping.Send($address, $timeout, $message, $popt)
$addr = $reply.Address
$rtt = $reply.RoundtripTime
try {
$dns = [System.Net.Dns]::GetHostByAddress($addr)
} catch {
$dns = "-"
}
$name = $dns.HostName
echo "Hop: $ttl`t= $addr`t($name)"
if($reply.Status -eq $success) {break}
}
Edit:
Rimosso alcuni dei pericolo con l'aggiunta di un'istruzione catch. L'unica pericolo che è ancora presente è il fatto che inviamo una sola richiesta per hop, il che potrebbe significare che noi non arriviamo un salto a causa di un innocente pacchetto goccia. La risoluzione di questo problema rimane un esercizio riservato ai lettori. Suggerimento: (Pensa ai loop all'interno dei loop)
Bonus: Ora cerchiamo di ottenere l'ingresso DNS di ogni salto!
È possibile utilizzare l'originale 'tracert.exe' da PowerShell, è sufficiente analizzare l'output da soli –
Grazie uomo, mi hai aiutato molto !!! – Sylca