Traceroute Help

I am using traceroute to count hops between servers which it does just fine, what i am looking to do is write a script to output the last line/hop of the traceroute output to an excel file, is ther an easy way to do this?

Tracing route to

over a maximum of 30 hops:[]

  1    <1 ms    <1 ms    <1 ms

  2    <1 ms    <1 ms    <1 ms

  3    <1 ms    <1 ms    <1 ms

  4     1 ms     1 ms    <1 ms

  5    <1 ms    <1 ms    <1 ms  servername []

  6    38 ms    41 ms    39 ms  servername []  e.g. this is the only line that i want to export to excel.

There are 40 servers and i can traceroute them all in a batch file but all i need is the last line exported.

Thanks and regards.


Who is Participating?
Steve KnightConnect With a Mentor IT ConsultancyCommented:
I wrote a custom batch file to carry out what was asked for and would appreciate at least a decent split in points for that, work would have continued if the asker continued with it...
Dear dcreedon,
You can write a batch file with Tracert command to the servers. Execute the Batch file and pipe it to a file with csv ext. Try to open the file in Excel it will work


Test.bat should contain the tracert commands.

Hope it helps you

I would agree, dump that into excel and from there you can start setting up the data links. If the routes are generally going to be different lengths it might be worth nesting some if functions.

a1 traceip1
a2 traceip2
a3 traceip3
a4 traceip4
a6 =if(a4>0,a4,if(a3>0,a3,if(a2>0,a2,if(a1>0,a1,0))))

This will display the last know IP even if they are different lengths every time.
Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

Steve KnightIT ConsultancyCommented:
You could write a batch file as follows.  This takes a list of addresses - either ip or hostname, whatever works on the tracert line, and runs a tracert then picks out the last line that works into a CSV file.  Is that what you want?


@echo off
set logfile=c:\logfile.csv
set addresses=c:\addresses.txt
IF NOT EXIST %addresses% echo %addresses file not found.  This should have each IP or hostname, one per line & goto end

echo Computer,hops,time 1,time 2,time 3, IP Address > %logfile%

for /f "tokens=1" %%y in (%addresses%) do call :process %%y
goto end


echo Tracert to %1
set num= & set ms1= & set ms2= & set ms3= & set IP=
for /f "tokens=1,2,4,6,8 delims= " %%a in ('tracert -h 20 -d %1 ^| find /i "ms"') do set num=%%a & set ms1=%%b & set ms2=%%c & set ms3=%%d & set IP=%%e

echo %1,%num%,^%ms1%,^%ms2%,^%ms3%,%ip%
echo %1,%num%,^%ms1%,^%ms2%,^%ms3%,%ip% >> %logfile%


Simpler and quicker I think overall is to simply copy the 40 to a new file. This can be done directly off the dos window, or by redirecting it over to a text file, such as log.txt. Once you have that then you can decide on whether or not to invest in Excel

If you then want his to be a daily job, then my vote is to place everything that is output into a single flle (trace.log). Process the log with a language that cna identify strings, to pull out the 40 or so lines desired by parsing. Do not count on results always being on same line number, you already list twice the hops that are needed.
dcreedonAuthor Commented:
Hi Guys,

Thanks for all the help so far, but maybe i didn't explain myself properly before. I have a batch file thats tracerts 40 servers all at once. The ouptut gets sent to a text file and i can import that to excel and manually take the last lines out of each servers traceroute and copy into another excel sheet. Very tedious is it not. What i want to do is have a script or something that will pull the last line out of each servers traceroute (Either on the text file or excel) and put it into an excel file. This would save a lot of time. I know this can be difficult as each trace route is different on the text file, different hops, TTLs IP's etc but if this is possible any help would be greatly apprcieated.

Thanks Guys.
Steve KnightIT ConsultancyCommented:
Hmm, just checking. Did my post go through?  Looks like it :-)

Have you tried the batch file I posted above.  That is what it does.  It takes the list of servers from the file addresses.txt, one entered per line, runs a tracert then collects that data for you into a CSV...

It does do it one after another... is that an issue?

dcreedonAuthor Commented:
Hi Steve,

I ran the script and and all it did was create the excel file with no content. Can't see why it's doing that.

Steve KnightIT ConsultancyCommented:
OK, try removing the @echo off line and re-run it to see any errors.  I tried it on NT4 and Windows 2003.  On the screen it should come back with


Tracert to Server1.domain.internal
server1.domain.internal,10 ,8 ,8 ,8 ,
Tracert to server2.domain.internal
server2.domain.internal,10 ,6 ,6 ,6 ,

And the two CSV lile lines go to the screend and CSV file

In the text file addresses.txt add the IP or servername or fully qualified.

It currently sets a maximum hop of 30 which you can adjust on the tracert line and turns off name resolution with the -d option to speed it up.

Correct me if I am wrong but what I am trying to produce for you IS what you are asking for ultimately isn't it before I put any more time into it?

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.