微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NetApp SDK Perl 小测试

最近在看NetApp的SDK,想做Quota快满时发E-mail给NetApp管理员的这个功能。当然,这个功能只能在目前的autosupport里有体现,智能点的就需要自己来了。本人是Perl初哥,以下代码不是最佳的,只做参考而已。

环境:

NetApp SDK 4.0 / OnTap 7.3.3 /Perl 5.8

大概的流程

1. 可以使用SDK里相关的API可以提取 Quota信息,导出的信息是XML格式。

Example:

perl apitest.pl  <filer> <username/passwd> quota-report volume <volume>

2. 使用Perl读取XML文件在此我们用了 XML::Simple 模块来读取XML

Example:

use XML::Simple;
$xml = XMLin( 'quotafile.xml',ForceArray =>1);

3. 我们需要的tree,disk-limit,disk-used 这三部分信息。打印下看看

Example:

@quota = @{$xml->{quotas}->[0]->{quota}};

 

$quotal = @quota;

 

for ($i=0; $i<=$quotal-1; $i++){

 

    $qtree = $xml->{quotas}->[0]->{quota}->[$i]->{'tree'}->[0];

 

    $qlimit = $xml->{quotas}->[0]->{quota}->[$i]->{'disk-limit'}->[0];

 

    $qused = $xml->{quotas}->[0]->{quota}->[$i]->{'disk-used'}->[0];

 

    if ($qused ne "0" ) {

 

        print $qtree,"\n",$qlimit,$qused,"\n" ;

 

    }

 

}

4. 比较disk-used/disk-limit的比例,打印出大于 0.8的来看看,perl很智能,数值字符貌似可以混着来。

Exmaple:

@quota = @{$xml->{quotas}->[0]->{quota}};
$quotal = @quota;
for ($i=0; $i<=$quotal-1; $i++){
    $qtree = $xml->{quotas}->[0]->{quota}->[$i]->{'tree'}->[0];
    $qlimit = $xml->{quotas}->[0]->{quota}->[$i]->{'disk-limit'}->[0];
    $qused = $xml->{quotas}->[0]->{quota}->[$i]->{'disk-used'}->[0];
    if ($qused ne "0" ) {
        if ($qused/$qlimit >= "0.8"){
            print $qtree,"\n" ;
        }
    }
}
 

5. 写个E-mail的sub,可以在判定条件成立时发邮件出去

Example:

use Net::SMTP;
sub send_mail {
        $emailbody= "Dear user,the disk quota of <QTree name> used ratio high than 80%,please check";
        $smtp = Net::SMTP->new("$mailserver");
        $smtp->mail("$fromname");
        $smtp->to($User);
        $smtp->bcc($bbcname);
        $smtp->data();
        $smtp->datasend("Subject: disk Space almost full,Please check\n");
        $smtp->datasend("\n");
        $smtp->datasend("$emailbody \n");
        $smtp->dataend();
        $smtp->quit;
}

5条写完,基本就是这样了。 因为quota里看不到具体的用户,如果要发e-mail给最终用户则还要再进一步。等我有空再更新了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐