Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use warnings;
- use strict;
- use Sys::Statistics::Linux;
- use Net::SMTP::SSL;
- $0='/dev/null/dayWalKeR';
- #------------------------#
- # Declare some variables #
- #------------------------#
- my $to='my@email.com';
- my $subject='Report-Information';
- my $email_pass='<MY_PASS>';
- my $from='other@email.com';
- my $smtp;
- my $count=0;
- #---------------------------------------#
- #
- if(fork())
- {
- close(STDOUT);
- close(STDERR);
- close(STDIN);
- exit;
- }
- while(1)
- {
- if(not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',Port => 465, Debug => 0))
- {
- die "Could not connect to mail server\n";
- }
- $smtp->auth($from, $email_pass) || die "Authentication failed!\n";
- #------------------------#
- # Initialize the module #
- #------------------------#
- my $lxs = Sys::Statistics::Linux->new(
- sysinfo => 1,
- cpustats => 1,
- procstats => 1,
- memstats => 1,
- netstats => 1,
- sockstats => 1,
- loadavg => 1,
- );
- sleep 1; my $stat = $lxs->get;
- #---------------------------------------#
- #-------------------------#
- # Initialize the objects #
- #-------------------------#
- # get cpu stats
- my $cpu = $stat->cpustats->{cpu};
- my $cpu_user_perc = $cpu->{user};
- my $cpu_nice_perc = $cpu->{nice};
- my $cpu_system_perc = $cpu->{idle};
- my $cpu_idle_perc = $cpu->{system};
- my $cpu_iowait_perc = $cpu->{iowait};
- #---------------------------------------#
- # get loadavg stats
- #--------------------#
- my $loadavg_1 = $stat->loadavg->{avg_1};
- my $loadavg_5 = $stat->loadavg->{avg_5};
- my $loadavg_15 = $stat->loadavg->{avg_15};
- #my $load=$loadavg_1;
- #$load =~ s/\.//;
- #---------------------------------------#
- # get mem stats in MB
- #--------------------#
- my $mem_used = int($stat->memstats->{memused}/1024);
- my $mem_free = int($stat->memstats->{memfree}/1024);
- my $mem_total = int($stat->memstats->{memtotal}/1024);
- #
- # => to_do
- #
- my $mem_buffers = int($stat->memstats->{buffers}/1024);
- my $mem_cache = int($stat->memstats->{cached}/1024);
- # my $swap_used = int($stat->memstats->{swap_used}/1024);
- # my $swap_free = int($stat->memstats->{swap_free}/1024);
- # my $swap_total = int($stat->memstats->{swap_total}/1024);
- #if(-z $mem_buffers or $mem_buffers==0)
- #{
- # print "dobro";
- #}
- # => end to_do
- #
- #---------------------------------------#
- # get proc status
- #--------------------#
- my $wait_io_proc = $stat->procstats->{blocked};
- my $running_proc = $stat->procstats->{running};
- #---------------------------------------#
- # get socket statistics
- #--------------------#
- my $socket_used = $stat->sockstats->{used};
- my $socket_tcp = $stat->sockstats->{tcp};
- my $socket_udp = $stat->sockstats->{udp};
- #---------------------------------------#
- # get SysInfo
- #--------------------#
- my $hostname = $stat->sysinfo->{hostname};
- my $kernel_name = $stat->sysinfo->{kernel};
- my $kernel_release = $stat->sysinfo->{release};
- my $uptime = $stat->sysinfo->{uptime};
- my $idle_time = $stat->sysinfo->{idletime};
- #---------------------------------------#
- if( $loadavg_1 > 0.80 || $mem_free < 100 )
- {
- my $hrule = "\n";
- my $hrule2 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n";
- my $sys_info_msg = " Hostname: '$hostname' - Kernel: '$kernel_name $kernel_release' - Uptime: '$uptime' - Idling: '$idle_time'\n";
- 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";
- 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";
- 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";
- my $proc_ram_cpu = `ps -eo user,stat,rss,vsz,pid,cputime,cmd --width 100 --sort rss,vsz`;
- my $active_connections = `netstat -anlp | grep ESTABLISHED`;
- my $ps_output = `ps auwwxf`;
- my $top_snap = `top -n 1 -b`;
- my $message = $hrule2 . $sys_info_msg . $hrule . $load_avg_msg . $hrule . $cpu_stat_msg . $hrule . $proc_stat_msg . $hrule2 . "\n";
- $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;
- $smtp->mail($from . "\n");
- my @recipients = split(/,/, $to);
- foreach my $recipient (@recipients)
- {
- $smtp->to($recipient . "\n");
- }
- $smtp->data();
- $smtp->datasend("From: " . $from . "\n");
- $smtp->datasend("To: " . $to . "\n");
- $smtp->datasend("Subject: " . $subject . "\n");
- $smtp->datasend("MIME-Version: 1.0\n");
- $smtp->datasend("Content-Type: text/plain; charset=iso-8859-1\n");
- $smtp->datasend("Content-Transfer-Encoding: quoted-printable\n");
- $smtp->datasend($message . "\n\n");
- $smtp->dataend();
- $smtp->quit;
- $message = "";
- $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;
- if($count<=5)
- {
- $count=$count+1;
- sleep (60);
- }
- $count=0;
- }
- $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;
- sleep (60);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement