NetXMS Support Forum

English Support => General Support => Topic started by: pedrong on May 22, 2014, 10:00:58 AM

Title: Traceroute
Post by: pedrong on May 22, 2014, 10:00:58 AM
hi all,

I just wonder if there is any monitor on the trace route result! What I want to do is if the predefined traceroute result is different from the real time traceroute result, an alert should be sent out.

Thanks!

Pedro
Title: Re: Traceroute
Post by: pedrong on May 29, 2014, 10:53:24 AM
hi All, after digging on the forum, I finally figured out how to do that. Basically, I use ExternalParameter to implement the traceroute checking function.  Here is what I did :-

1) Create a powershell script in a host, check_3hoptracert.ps1

2) In the nxagentd.conf, add this line

ExternalParameter = Check_3Hop(*): "c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "D:\netxms-agent\bin\check_3hoptracert.ps1" $1 $2 $3 $4

3) In NetXMS console, add a DCI per the screen attached.

Please make sure the AgentCommandTimeout specified in server configuration and exectimeout specified in nxagentd.conf are large enough to execute the script.

I hope this can help someone in the future. Thanks!

check_3hoptracert.ps1
===============
# This script is to check whether the first 3 hops of a traceroute is the same as the specifed ip addresses
# Return "OK" if same; otherwise "Changed"
#
# Usage : check_3hoptracert hostname 1st-hop 2nd-hop 3rd-hop
#
# Written by Pedro on 29/5/2014


# Get arguments
$hostname = $args[0]
$ip1 = $args[1]
$ip2 = $args[2]
$ip3 = $args[3]


# Run traceroute
tracert -d $hostname > c:\temp\tracert.txt

# Get 1st hop
$hop1 = get-content c:\temp\tracert.txt | select-object -skip 3 | select-object -First 1 | % { $_.substring(32,9); }
#write-host $hop1  " " $ip1
if ( $hop1 -ne $ip1 ) {  write-host "Changed"; EXIT 0; }

# Get 2nd hop
$hop2 = get-content c:\temp\tracert.txt | select-object -skip 4 | select-object -First 1 | % { $_.substring(32,9); }
#write-host $hop2
if ( $hop2 -ne $ip2 ) {  write-host "Changed"; EXIT 0; }


# Get 3rd hop
$hop3 = get-content c:\temp\tracert.txt | select-object -skip 5 | select-object -First 1 | % { $_.substring(32,9); }
#write-host $hop3
if ( $hop3 -ne $ip3 ) {  write-host "Changed"; EXIT 0; }

# The traceroute result is the same as specified
write-host "OK"
del c:\temp\tracert.txt
EXIT 1