makeanalyse.pl
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:3k
源码类别:

SNMP编程

开发平台:

C/C++

  1. # makeanalyse.pl
  2. #
  3. # Generate an HTML page containing a list of networks and a list of traffic
  4. # sources. This page invokes the CGI script analyse.pl. The page is written to
  5. # STDOUT.
  6. #
  7. # Modification History
  8. ######################
  9. # 23 Dec 98 Tony Farr Original coding
  10. ##############################################################################
  11. use strict;
  12. my(@sources, @dests); # Globals
  13. my $LOGPATH= "D:\logs\whodo\"; # Directory where csv/logs are stored.
  14. get_sources_and_dests();
  15. write_html();
  16. exit(0);
  17. sub get_sources_and_dests {
  18. # Initialises @sources & @dests with yesterday's traffic sources and destinations
  19. my(%srchash, %dsthash, $src, $dst);
  20. my $fname= get_input_file();
  21. open(LOG,"<$fname") || die "$0: unable to open input file $fname; $!";
  22. # First 2 lines are headers
  23. <LOG> || die "$0: $fname is emptyn";
  24. <LOG> || die "$0: $fname lacks second header linen";
  25. # The rest of the file has traffic for particular sources & destinations
  26. while (<LOG>) {
  27. ($src, $dst)= split/,/;
  28. $srchash{$src}= 1;
  29. $dsthash{$dst}= 1;
  30. }
  31. close(LOG);
  32. # Transfer them from the hashes to the arrays
  33. @sources= sort( keys(%srchash) );
  34. @dests= sort( keys(%dsthash) );
  35. }
  36. sub get_input_file {
  37. # Returns the file name of yesterday's whodo log
  38. my $t = time() - 24*60*60;
  39. my ($mday,$mon,$year) = ( localtime($t) )[3..5];
  40. $LOGPATH . sprintf("%d%02d%02d.csv",$year+1900,$mon+1,$mday);
  41. }
  42. sub write_html {
  43. print <<HEAD;
  44. <HTML><head><title>Analyse traffic sources or destinations</title></head>
  45. <BODY><H1>Analyse traffic sources or destinations</H1><HR>
  46. <FORM METHOD="POST" ACTION="../scripts/analyse.pl">
  47. <P>Show sources sending traffic to: 
  48. <SELECT NAME="dest"><OPTION></OPTION>
  49. HEAD
  50. foreach my $dst (@dests) {
  51. print "<OPTION>$dst</OPTION>n";
  52. }
  53. print <<MIDDLE;
  54. </SELECT>(Leave blank to include all destinations.)</P>
  55. <P>During last: 
  56. <INPUT TYPE="radio" NAME="src_duration" VALUE="30 minutes" checked>30 minutes
  57. <INPUT TYPE="radio" NAME="src_duration" VALUE="day">day
  58. <INPUT TYPE="radio" NAME="src_duration" VALUE="week">week
  59. <INPUT TYPE="radio" NAME="src_duration" VALUE="month">month</P>
  60. <P>Summarise minor sources: <INPUT TYPE="checkbox" NAME="summarise" checked></P>
  61. <INPUT TYPE="Submit" NAME="submit" VALUE="Get sources">
  62. </FORM><H3>OR</H3><FORM METHOD="POST" ACTION="../scripts/analyse.pl">
  63. <P>Show destinations receiving traffic from: 
  64. <SELECT NAME="src"><OPTION></OPTION>
  65. MIDDLE
  66. foreach my $src (@sources) {
  67. print "<OPTION>$src</OPTION>n";
  68. }
  69. print <<TAIL;
  70. </SELECT>(Leave blank to include all sources.)</P>
  71. <P>During last: 
  72. <INPUT TYPE="radio" NAME="dest_duration" VALUE="30 minutes" checked>30 minutes
  73. <INPUT TYPE="radio" NAME="dest_duration" VALUE="day">day
  74. <INPUT TYPE="radio" NAME="dest_duration" VALUE="week">week
  75. <INPUT TYPE="radio" NAME="dest_duration" VALUE="month">month</P>
  76. <P>Summarise minor destinations: <INPUT TYPE="checkbox" NAME="summarise" checked></P>
  77. <INPUT TYPE="Submit" NAME="submit" VALUE="Get destinations">
  78. </FORM><HR>
  79. </BODY></HTML>
  80. TAIL
  81. }