Need To Add Email Alerts feature in CaiCai?

Posted on 2008-06-24
Last Modified: 2010-04-16

I am using CaiCai as Network Monitoring System ( CaiCai uses ICMP to get status from devices. Nice application as it is not dependent on SNMP. It is web based and written in Python. I am alien to python.Whenever a device does not respond to pings from CaiCai then it generates error and posts them on a web page. This application does not have any email alerting mechanism. I want to add the email alerts mechanism to this application. Can some body help me out. I am attaching the error generating mechanism in caicai.
# updates data (or adds entry, is not present there) for errors_stats[]

# error_report is a matrix cell (which is a matrix itself) from the processed logfile

def update_errors_stats (error_report):

	error_duration = error_report[1] - error_report[0]


	line_counter = 0

	for i in errors_stats:

		if i[0] == error_report[2]:

			if errors_stats[line_counter][1] > error_duration:

				errors_stats[line_counter][1] = error_duration

			if errors_stats[line_counter][2] < error_duration:

				errors_stats[line_counter][2] = error_duration

			errors_stats[line_counter][3] += 1

			errors_stats[line_counter][4] += error_duration

			return ()

		line_counter += 1


	# entry not found, let's add one then

	entry_for_errors_stats = []

	entry_for_errors_stats.append (error_report[2])

	entry_for_errors_stats.append (error_duration)

	entry_for_errors_stats.append (error_duration)

	entry_for_errors_stats.append (1)

	entry_for_errors_stats.append (error_duration)	

	errors_stats.append (entry_for_errors_stats)

	return ()

Open in new window

Question by:Kamran Arshad
  • 3
LVL 17

Accepted Solution

ramrom earned 500 total points
Comment Utility
Take a look at the smtplib module. It is part of the Python distribution. There is sample code in the docs that will probably do the trick, which I show here.

You will have to make some changes (how msg is constructed, and where the SMTP server is).
import smtplib

def prompt(prompt):

    return raw_input(prompt).strip()

fromaddr = prompt("From: ")

toaddrs  = prompt("To: ").split()

print "Enter message, end with ^D (Unix) or ^Z (Windows):"

# Add the From: and To: headers at the start!

msg = ("From: %s\r\nTo: %s\r\n\r\n"

       % (fromaddr, ", ".join(toaddrs)))

while 1:


        line = raw_input()

    except EOFError:


    if not line:


    msg = msg + line

print "Message length is " + repr(len(msg))

server = smtplib.SMTP('localhost')


server.sendmail(fromaddr, toaddrs, msg)


Open in new window

LVL 32

Author Comment

by:Kamran Arshad
Comment Utility
Thanks a lot. I will experiment on this smtplib and hopefully get something out of it.
LVL 32

Author Comment

by:Kamran Arshad
Comment Utility
Thanks for the thought. Ok lets keep it open and I will update you. So far I have done simple emailing using the python code you gave me. It is not Integrated with caicai and I am working on it. Will update you when any error or problem occurs.
LVL 32

Author Comment

by:Kamran Arshad
Comment Utility
I am able to send emails from CaiCai NMS.

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Introduction A frequently used term in Object-Oriented design is "SOLID" which is a mnemonic acronym that covers five principles of OO design.  These principles do not stand alone; there is interplay among them.  And they are not laws, merely princ…
When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor ( If you're interested in additional methods for monitoring bandwidt…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now