I recently need to check if a particular application is online and listening on a particular set of ports. I figured that the best way to do this was to periodically issue some socket connects onto those ports. If I got an exception, then clearly there would be an issue.
This was all running on a CentOS Linux machine, so I opted for a Python script, have a look at my sample below
# Socket Connect Script # Author : James Elsey # Date : 27 January 2011 # Imports import socket import sys import time import datetime # Configure these as required.. remote_host = "127.0.0.1" print "About to start running script..." # run continuously while True: time.sleep(60) for remote_port in [80,8080]: # Setup socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(60) now = datetime.datetime.now() now_text = now.strftime("%Y-%m-%d %H:%M:%S") try: # Issue the socket connect on the host:port sock.connect((remote_host, remote_port)) except Exception,e: print "%s %d closed - Exception thrown when attempting to connect. " % (now_text, remote_port) else: print "%s %d open" % (now_text, remote_port) sock.close()
So there you have it, take it and modify as you please! You could remove the while True and setup a for loop to check for a specific number of times, or leave the continual loop in and create another method of breaking out, for me I just wanted to leave it running in a putty window and watch for changes.
Also, to run it, just use save it into a .py file and call “python myFile.py”