Guest User

daywalker - perl

a guest
Jun 21st, 2012
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6.05 KB | None | 0 0
  1. use warnings;
  2. use strict;
  3. use Sys::Statistics::Linux;
  4. use Net::SMTP::SSL;
  5. $0='/dev/null/dayWalKeR';
  6.  
  7. #------------------------#
  8. # Declare some variables #
  9. #------------------------#
  10. my $subject='Report-Information';
  11. my $email_pass='<MY_PASS>';
  12. my $from='[email protected]';
  13. my $smtp;
  14. my $count=0;
  15. #---------------------------------------#
  16.  
  17. #
  18.  
  19. if(fork())
  20. {
  21.     close(STDOUT);
  22.     close(STDERR);
  23.     close(STDIN);
  24.     exit;
  25. }
  26.  
  27. while(1)
  28. {
  29.  
  30. if(not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',Port => 465, Debug => 0))
  31. {
  32.     die "Could not connect to mail server\n";
  33. }
  34. $smtp->auth($from, $email_pass) || die "Authentication failed!\n";
  35. #------------------------#
  36. # Initialize the module  #
  37. #------------------------#
  38. my $lxs = Sys::Statistics::Linux->new(
  39.         sysinfo   => 1,
  40.         cpustats  => 1,
  41.         procstats => 1,
  42.         memstats  => 1,
  43.         netstats  => 1,
  44.         sockstats => 1,
  45.         loadavg   => 1,
  46.     );
  47. sleep 1; my $stat = $lxs->get;
  48. #---------------------------------------#
  49.  
  50. #-------------------------#
  51. # Initialize the objects  #
  52. #-------------------------#
  53. # get cpu stats
  54. my $cpu  = $stat->cpustats->{cpu};
  55. my $cpu_user_perc   = $cpu->{user};
  56. my $cpu_nice_perc   = $cpu->{nice};
  57. my $cpu_system_perc = $cpu->{idle};
  58. my $cpu_idle_perc   = $cpu->{system};
  59. my $cpu_iowait_perc = $cpu->{iowait};
  60.  
  61. #---------------------------------------#
  62. # get loadavg stats
  63. #--------------------#
  64. my $loadavg_1       = $stat->loadavg->{avg_1};
  65. my $loadavg_5       = $stat->loadavg->{avg_5};
  66. my $loadavg_15      = $stat->loadavg->{avg_15};
  67. #my $load=$loadavg_1;
  68. #$load =~ s/\.//;
  69. #---------------------------------------#
  70. # get mem stats in MB
  71. #--------------------#
  72. my $mem_used    = int($stat->memstats->{memused}/1024);
  73. my $mem_free    = int($stat->memstats->{memfree}/1024);
  74. my $mem_total   = int($stat->memstats->{memtotal}/1024);
  75. #
  76. # => to_do
  77. #
  78. my $mem_buffers = int($stat->memstats->{buffers}/1024);
  79. my $mem_cache  = int($stat->memstats->{cached}/1024);
  80. # my $swap_used  = int($stat->memstats->{swap_used}/1024);
  81. # my $swap_free  = int($stat->memstats->{swap_free}/1024);
  82. # my $swap_total = int($stat->memstats->{swap_total}/1024);
  83. #if(-z $mem_buffers or $mem_buffers==0)
  84. #{
  85. #    print "dobro";
  86. #}
  87. # => end to_do
  88. #
  89. #---------------------------------------#
  90. # get proc status
  91. #--------------------#
  92. my $wait_io_proc    = $stat->procstats->{blocked};
  93. my $running_proc    = $stat->procstats->{running};
  94. #---------------------------------------#
  95. # get socket statistics
  96. #--------------------#
  97. my $socket_used     = $stat->sockstats->{used};
  98. my $socket_tcp      = $stat->sockstats->{tcp};
  99. my $socket_udp      = $stat->sockstats->{udp};
  100. #---------------------------------------#
  101. # get SysInfo
  102. #--------------------#
  103. my $hostname         = $stat->sysinfo->{hostname};
  104. my $kernel_name      = $stat->sysinfo->{kernel};
  105. my $kernel_release   = $stat->sysinfo->{release};
  106. my $uptime           = $stat->sysinfo->{uptime};
  107. my $idle_time        = $stat->sysinfo->{idletime};
  108.  
  109. #---------------------------------------#
  110.  
  111.     if( $loadavg_1 > 0.80 || $mem_free < 100 )
  112.     {
  113.         my $hrule = "\n";
  114.         my $hrule2 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n";
  115.         my $sys_info_msg = " Hostname: '$hostname' - Kernel: '$kernel_name $kernel_release' - Uptime: '$uptime' - Idling: '$idle_time'\n";
  116.         my $load_avg_msg = " Load Average: [$loadavg_1, $loadavg_5, $loadavg_15] | RAM used:[$mem_used MB] - free:[$mem_free MB] - total:[$mem_total MB] - cache:[$mem_cache MB] - buffer:[$mem_buffers MB]\n";
  117.         my $cpu_stat_msg = " CPU Usage statistics:\n user usage: [$cpu_user_perc\%] - nice usage: [$cpu_nice_perc\%] - system usage: [$cpu_system_perc\%] - I/O usage: [$cpu_iowait_perc\%] - idle usage: [$cpu_idle_perc\%]\n";
  118.         my $proc_stat_msg = " Processes on I/O: [$wait_io_proc] - Running processes: [$running_proc] - Sockets used: [$socket_used] - TCP Sockets: [$socket_tcp] - UDP Sockets: [$socket_udp]\n";
  119.         my $proc_ram_cpu = `ps -eo user,stat,rss,vsz,pid,cputime,cmd --width 100 --sort rss,vsz`;
  120.         my $active_connections = `netstat -anlp | grep ESTABLISHED`;
  121.         my $ps_output = `ps auwwxf`;
  122.         my $top_snap = `top -n 1 -b`;
  123.  
  124.         my $message = $hrule2 . $sys_info_msg . $hrule . $load_avg_msg . $hrule . $cpu_stat_msg . $hrule . $proc_stat_msg . $hrule2 . "\n";
  125.         $message = $message . " Active connections:\n" . $hrule . $active_connections . $hrule . $hrule2 . $hrule . " Top RAM hungry processes:\n" . $hrule . $proc_ram_cpu . "\n" . $hrule2 . "\n" .  " Ps auwwwxf output:\n" . $hrule . $ps_output . $hrule . $hrule2 . $hrule . " top -n1 -b snapshot:\n\n" . $top_snap . $hrule . $hrule2;
  126.  
  127.         $smtp->mail($from . "\n");
  128.         my @recipients = split(/,/, $to);
  129.         foreach my $recipient (@recipients)
  130.         {
  131.             $smtp->to($recipient . "\n");
  132.         }
  133.  
  134.         $smtp->data();
  135.         $smtp->datasend("From: " . $from . "\n");
  136.         $smtp->datasend("To: " . $to . "\n");
  137.         $smtp->datasend("Subject: " . $subject . "\n");
  138.         $smtp->datasend("MIME-Version: 1.0\n");
  139.         $smtp->datasend("Content-Type: text/plain; charset=iso-8859-1\n");
  140.         $smtp->datasend("Content-Transfer-Encoding: quoted-printable\n");
  141.         $smtp->datasend($message . "\n\n");
  142.         $smtp->dataend();
  143.         $smtp->quit;
  144.  
  145.         $message = "";
  146.         $hrule= $hrule2= $sys_info_msg= $load_avg_msg= $cpu_stat_msg= $message= $proc_stat_msg= $proc_ram_cpu= $active_connections= $ps_output= $top_snap= $stat = undef;
  147.  
  148.         if($count<=5)
  149.         {
  150.             $count=$count+1;
  151.             sleep (60);
  152.         }
  153.         $count=0;
  154.     }
  155.  
  156.     $hostname=$kernel_name=$kernel_release=$uptime=$idle_time=$socket_used=$socket_tcp=$socket_udp=$wait_io_proc=$running_proc=$mem_buffers=$mem_cache=$mem_used=$mem_free=$mem_total=$loadavg_1=$loadavg_5=$loadavg_15=$stat=$cpu_user_perc=$cpu_system_perc=$cpu_idle_perc=$cpu_iowait_perc=$cpu = undef;
  157.  
  158.     sleep (60);
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment