[英]windows cmd batch file for parallel traceroute of 32 IPs
我在文件 tracerouteiplistA.txt 中有 32 个 IP
在名为 tracerouteScriptA.bat 的批处理文件的 for/while 循环中,
我想跟踪所有这些路由并将结果存储在 traceA.txt
如果 10. 可见,我想在 traceresponseA.txt 中写 0。 如果 172. 可见,则为 1,否则如果请求超时或失败,我想写 2。
我当前的代码如下 -
@echo off
cd C:\Users\Administrator\Desktop
FOR /F "usebackq delims=*" %%a in (tracerouteiplistA.txt) do (
tracert -h 3 "%%a" > traceA.txt
findstr /m "10." traceA.txt
if %errorlevel%==0 (echo "0" > traceresponseA.txt)
findstr /m "172." traceA.txt
if %errorlevel%==0 (echo "1" > traceresponseA.txt) else (echo "2" > traceresponseA.txt)
)
Powershell 解决方案:
#get all IP
$Result=Get-Content "c:\temp\tracerouteiplistA.txt" | foreach{
#for every IP we do a traceroute
Test-NetConnection $_ -TraceRoute | foreach{
$Current=$_
#one line by hop
$_.TraceRoute | foreach{
if ($_ -like "10.*")
{
$Analyse="0"
}
elseif ($_ -like "172.*")
{
$Analyse="1"
}
else
{
$Analyse="2"
}
#create an objet and send to output
[pscustomobject]@{
IP=$Current.RemoteAddress
HopIP=$_
Analyse=$Analyse
}
}
}
}
#result into file, we take the first result in priority order
$Result | sort Analyse | select Analyse -First 1 -ExpandProperty Analyse | Out-File "c:\temp\traceresponseA.txt"
#if you want look result
$Result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.