BEGIN {
#
## Global Variables Initialization (Feel you free to edit as needed)
#
#
mrtg_var_WorkDir = "/usr/local/mrtg/contrib/net-hosts" # it will be inserted into MRTG config file
mrtg_var_IconDir = "http://www.your.domain/img/" # it will be inserted into MRTG config file and it will be used on HTML documents
mrtg_var_Interval = "5" # it will be inserted into MRTG config file
mrtg_executable = "/usr/local/mrtg/mrtg" # MRTG executable file with full path
mrtg_nethosts_cfg = "/usr/local/mrtg/contrib/net-hosts/mrtg-awk.cfg" # MRTG config file for net-hosts
nethosts_internet_path = "/usr/local/mrtg/contrib/net-hosts" # the path for internet IPs file (without / at the end)
nethosts_css_file = "http://www.your.domain/css/mrtg/net-hosts.css" # CSS File definition for HTML documents
nethosts_maintainer_email = "Your Name <your@email.address>" # Maintainer email address
#
## Start index number for array
#
lines = 1
startdate = systime()
dataexpirarii = startdate+300 # Expire date for HTML documents, +5 min (mrtg_var_Interval)
dataexp = strftime("%c %Z", dataexpirarii)
dataexpirarii = strftime("%d-%m-%Y %T %Z",dataexpirarii)
system((">" mrtg_nethosts_cfg))
}
{
#
# The state from fping for every IP is inserted into array
state=$2$3
ip=$1
array[lines,1] = ip
array[lines,2] = state
lines++
}
END {
close(FILENAME)
#
## Variables Definition
#
header="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\"> \
<HTML> \
<HEAD> \
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"300\"> \
<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\"> \
<META HTTP-EQUIV=\"Expires\" CONTENT=\""dataexp"\"> \
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\"> \
<link rel=\"STYLESHEET\" type=\"text/css\" href=\"" nethosts_css_file "\"> \
<TITLE>Internet Conection Statistics Overview</TITLE> \
</HEAD> \
<BODY> \
<H1 CLASS=\"h1\"><A HREF=\"javascript:history.back();\">Main Index</A> +++ Internet Conection Statistics Overview</H1>"
footer="<BR></BODY></HTML>"
#
lastmod=("<CENTER><SMALL>Last modified: <FONT STYLE=\"color: darkblue;\">" strftime("%d-%m-%Y %T %Z",startdate) "</FONT>.</SMALL></CENTER>")
expire="<CENTER><SMALL>Expire on: <FONT STYLE=\"color: darkblue;\">"dataexpirarii"</FONT>.</SMALL></CENTER>"
#
tablestart="<TABLE BORDER=0 WIDTH=\"100%\"> \
<TR> \
<TH CLASS=\"pth\">Index</TH> \
<TH CLASS=\"pth\">Name</TH> \
<TH CLASS=\"pth\">IP</TH> \
<TH CLASS=\"pth\">Status</TH> \
<TH CLASS=\"pth\">Last Changed On</TH> \
</TR>"
tableend="</table><BR>"
#
startraw="<TR>"
endrow="</TR>"
#
startcell="<TD CLASS=\"ptb\">"
endcell="</TD>"
#
startlongcell="<TD CLASS=\"ptb\" COLSPAN=\"5\">"
#
imgdown=("<IMG SRC=\"" mrtg_var_IconDir "redball.gif\">")
imgup=("<IMG SRC=\"" mrtg_var_IconDir "grnball.gif\">")
#
pstart="<P CLASS=\"ptb\">"
pend="</P>"
#
##
#
print header > (mrtg_var_WorkDir "/internet.html")
print tablestart >> (mrtg_var_WorkDir "/internet.html")
#
#
print ("WorkDir: " mrtg_var_WorkDir) > mrtg_nethosts_cfg
print ("IconDir: " mrtg_var_IconDir) > mrtg_nethosts_cfg
print ("Interval: " mrtg_var_Interval) > mrtg_nethosts_cfg
print "\n\n#----------------------------------------------------------------------------\n\n" > mrtg_nethosts_cfg
#
##
#
xx = 1
kontor = 0
succesiv = "0"
#
## Fping results processing
#
while ((getline line < (nethosts_internet_path "/internet")) > 0 ){
split(line, l, ":")
for ( i = 1 ; i < lines; i++ ){
if ( array[i, 1] == l[1] ){
break
}
}
if ( l[4] == 1 ){
last_state = "isalive"
}
else {
last_state = "isdad"
}
myfun(xx, i, l[2], l[3], last_state)
i++
xx++
}
close((nethosts_internet_path "/internet"))
#
##
#
print tableend >> (mrtg_var_WorkDir "/internet.html")
print lastmod >> (mrtg_var_WorkDir "/internet.html")
print expire >> (mrtg_var_WorkDir "/internet.html")
print footer >> (mrtg_var_WorkDir "/internet.html")
#
##
#
system(("mv -f " nethosts_internet_path "/tmpinternet " nethosts_internet_path "/internet"))
system((mrtg_executable " " mrtg_nethosts_cfg " 2> /dev/null"))
}
function myfun(f_rindex, f_index, f_name, f_olddate, f_last_state)
{
if( ! f_olddate ){
f_olddate = startdate
}
#
if(array[f_index, 2] == "isalive"){
statew = 1
succesiv = "0"
kontor = 0
if ( f_last_state == array[f_index, 2] ) {
datew = f_olddate
}
else {
datew = startdate
}
print array[f_index, 1]":"f_name":"datew":"statew > (nethosts_internet_path "/tmpinternet")
print startrow startcell f_rindex endcell > (mrtg_var_WorkDir "/internet.html")
print (startcell "<A HREF=\"" tolower(f_name) ".html\">" f_name "</A>" endcell) > (mrtg_var_WorkDir "/internet.html")
print startcell array[f_index, 1] endcell > (mrtg_var_WorkDir "/internet.html")
print startcell imgup endcell > (mrtg_var_WorkDir "/internet.html")
print startcell strftime("%c %Z", datew) endcell > (mrtg_var_WorkDir "/internet.html")
print endrow > (mrtg_var_WorkDir "/internet.html")
print "Target[" f_name "]: `echo | awk '{ print \"1\\n1\\n..., last changed on: " strftime("%c %Z", datew) "\\n" array[f_index, 1] "\\n\"; exit }'`" > mrtg_nethosts_cfg
}
else {
statew = 0
if( succesiv == "0" ){
succesiv = "1"
}
kontor++
if ( f_last_state == array[f_index, 2] ) {
datew = f_olddate
}
else {
datew = startdate
}
print array[f_index, 1]":"f_name":"datew":"statew > (nethosts_internet_path "/tmpinternet")
print startrow startcell f_rindex endcell > (mrtg_var_WorkDir "/internet.html")
print (startcell "<A HREF=\"" tolower(f_name) ".html\">" f_name "</A>" endcell) > (mrtg_var_WorkDir "/internet.html")
print startcell array[f_index, 1] endcell > (mrtg_var_WorkDir "/internet.html")
print startcell imgdown endcell > (mrtg_var_WorkDir "/internet.html")
print startcell strftime("%c %Z", datew) endcell > (mrtg_var_WorkDir "/internet.html")
print endrow > (mrtg_var_WorkDir "/internet.html")
print "Target[" f_name "]: `echo | awk '{ print \"0\\n0\\n..., last changed on: " strftime("%c %Z", datew) "\\n" array[f_index, 1] "\\n\"; exit }'`" > mrtg_nethosts_cfg
}
print "Title[" f_name "]: " f_name > mrtg_nethosts_cfg
print "MaxBytes[" f_name "]: 1" > mrtg_nethosts_cfg
print "AbsMax[" f_name "]: 1" > mrtg_nethosts_cfg
print ("AddHead[" f_name "]: <link rel=\"STYLESHEET\" type=\"text/css\" href=\"" nethosts_css_file "\">") > mrtg_nethosts_cfg
print ("PageTop[" f_name "]: <H1 CLASS=\"h1\"><A HREF=\"javascript:history.back();\"><IMG SRC=\"" mrtg_var_IconDir "cubprev.gif\" BORDER=\"0\"></A> Connection State for <CODE><B>" f_name "</B></CODE>") > mrtg_nethosts_cfg
print " </H1>" > mrtg_nethosts_cfg
print " <TABLE>" > mrtg_nethosts_cfg
print " <TR><TD CLASS=\"ptb\">System:</TD><TD CLASS=\"pth\"><B>" f_name " (" array[f_index, 1] ")</B></TD></TR>" > mrtg_nethosts_cfg
print (" <TR><TD CLASS=\"ptb\">Maintainer:</TD><TD CLASS=\"pth\"><B>" nethosts_maintainer_email "</B></TD></TR>") > mrtg_nethosts_cfg
print " <TR><TD CLASS=\"ptb\">Service:</TD><TD CLASS=\"pth\"><B>Internet Connection</B></TD></TR>" > mrtg_nethosts_cfg
print " <TR><TD CLASS=\"ptb\">IP:</TD><TD CLASS=\"pth\"><B>" f_name " (" array[f_index, 1] ")</B></TD></TR>" > mrtg_nethosts_cfg
print " <TR><TD CLASS=\"ptb\">Last Changed On:</TD><TD CLASS=\"pth\"><B>" strftime("%c %Z", datew) "</B></TD></TR>" > mrtg_nethosts_cfg
print " </TABLE>" > mrtg_nethosts_cfg
print "Supress[" f_name "]: y" > mrtg_nethosts_cfg
print "LegendI[" f_name "]: used" > mrtg_nethosts_cfg
print "LegendO[" f_name "]: " > mrtg_nethosts_cfg
print "Legend1[" f_name "]: used
" > mrtg_nethosts_cfg
print "Legend2[" f_name "]:
" > mrtg_nethosts_cfg
print "YLegend[" f_name "]: used
" > mrtg_nethosts_cfg
print "ShortLegend[" f_name "]: used
" > mrtg_nethosts_cfg
print "Options[" f_name "]: gauge" > mrtg_nethosts_cfg
print "YTics[" f_name "]: 1" > mrtg_nethosts_cfg
print "\n\n#-------------------\n\n" > mrtg_nethosts_cfg
}