Easy TCP Port Listener for Network Uptime Monitoring
Products like Nagios, Zabbix, or PHP Server Monitor can monitor the uptime of services by performing a TCP port query. In short, “is port TCP 25” open? — its on/offline!
Well what if the server I want to monitor doesn’t have any services to even open up to the public internet for monitoring. Using TCP 135 (Microsoft RPC), TCP 445 (NetBIOS), TCP 3389 (Remote Desktop) built into every Server OS to monitor uptime can be very dangerous. Well I want a program that can listen on a port without massively exposing my servers.
There are two ways to go about this from the scope of this article:
- Install an application that hosts a service listener, like a HTTP (TCP 80) server or FTP (TCP 21) server. But you probably don’t want a HTTP or FTP server on say, a Domain Controller or backup machine.
- Run a small portable executable that listens on a single port as a scheduled task.
Enter: Port Listener
Made by RJL Software (http://www.rjlsoftware.com/software/utility/portlistener/), it’s a single EXE that can be programmed to listen to any port. It is a simple program, just responding with a TCP-ACK and that’s it!
The Port Listener Code
::It doesn't get simpler than this. ::Change the number "9999" to whatever TCP port you want to listen on. listener.exe 9999
##Client Query ##Check if the port is being listened on. If there is no output, the port is not being listened on. If you get a response of code, it's open and LISTENING. netstat -ano | find "9999"
Start > Run > taskschd.msc
Task Scheduler Library > Right-Click > Create Basic Task >
Name:#### Uptime TCP Listener
Right-Click > Properties > Run whether user is logged on or not > enter password.
Also edit Conditions (turn off “only run when idle”) and Settings (Stop if runs longer than 3 days) so it always runs , if task fails, restart every 10 minutes, etc.
Command Line Version:
::Create a Windows Firewall Rule netsh advfirewall firewall add rule name="9999 Uptime TCP Listener" dir=in action=allow protocol=TCP localport=9999 ::Create a Scheduled Task that runs on computer boot (ONSTART) ::Note the use of double quotes (") for the full command, and single quotes (') to isolate the executable so arguments/parameters can be passed through. schtasks /create /TN "9999 Uptime TCP Listener" /SC ONSTART /RU "NT AUTHORITY\NETWORKSERVICE" /TR "'C:\Scripts\listener.exe' 9999" ::Run scheduled task schtasks /Run /TN "9999 Uptime TCP Listener"
Reboot, see if it’s listening, you should have a port listening indefinitely. Add a firewall rule, add a monitor to Nagios/Your System, you’re done – woohoo!
Run on any Windows Server you want monitored, easy peasy! Have fun!