Solved

Need To Add Email Alerts feature in CaiCai?

Posted on 2008-06-24
5
254 Views
Last Modified: 2010-04-16
Hi,

I am using CaiCai as Network Monitoring System (caicai.sourceforge.net). 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

0
Comment
Question by:Kamran Arshad
  • 3
5 Comments
 
LVL 17

Accepted Solution

by:
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:

    try:

        line = raw_input()

    except EOFError:

        break

    if not line:

        break

    msg = msg + line
 

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

server = smtplib.SMTP('localhost')

server.set_debuglevel(1)

server.sendmail(fromaddr, toaddrs, msg)

server.quit()

Open in new window

0
 
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.
0
 
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.
0
 
LVL 32

Author Comment

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

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 (https://www.paessler.com/prtg). 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