首页 > 代码库 > linux perl——发送邮件及监控内存
linux perl——发送邮件及监控内存
#!perl use warnings; use strict; use Net::SMTP_auth; #&sendMail; while(1) { my ($sumMem, $freeMem, $rateMem); open MEM, "cat /proc/meminfo |" or die $!; while(<MEM>) { $sumMem = $1 if(/MemTotal:\s+(\d+)\s+kB/); $freeMem += $1 if(/MemFree:\s+(\d+)\s+kB/); $freeMem += $1 if(/Buffers:\s+(\d+)\s+kB/); $freeMem += $1 if(/Cached:\s+(\d+)\s+kB/); } $rateMem = sprintf("%d", $freeMem / $sumMem * 100); if($rateMem <= 10) { my $content = &detail; &sendMail($content); sleep(3600); } sleep(60); } sub detail { `top -bn 1 > log`; open LOG, "head -100 log |" or die $!; my $content; while(<LOG>) { next if(/^$/); my @top = split /\s+/; if($top[5] =~ /g|t/ and $top[0] =~ /\d+/) { $content .= "$top[1]\t$top[5]\t$top[11]\n"; } } return $content; } sub sendMail { my $content = shift @_; my $smtpHost = 'smtp.exmail.qq.com'; my $smtpPort = '25'; my $username = '***@genedenovo.com'; my $passowrd = '***'; my @to = ('***', '***'); my $suffix = "\@genedenovo.com"; my $subject = "请注意19服务器内存使用已超过90%!"; my $message = " Details: $content 来自$username的监控程序"; my $smtp = Net::SMTP_auth->new($smtpHost, Timeout => 30) or die "Error:连接到$smtpHost失败!"; $smtp->auth('LOGIN', $username, $passowrd) or die("Error:认证失败!"); my @address = map {my $i = $_.$suffix; $i} @to; my $x = join ", ", @address; $smtp->mail($username); $smtp->to(@address); $smtp->data(); $smtp->datasend("To: $x\n"); # strict format $smtp->datasend("From: $username\n"); # strict format $smtp->datasend("Subject: $subject\n"); # strict format $smtp->datasend("Content-Type:text/plain;charset=UTF-8\n"); # strict format $smtp->datasend("Content-Trensfer-Encoding:7bit\n\n"); # strict format $smtp->datasend($message); $smtp->dataend(); $smtp->quit(); }
linux perl——发送邮件及监控内存
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。