标签为 Perl 的文章
实现Zabbix通过邮件发送Screen图形报表
由 mcsrainbow 发表在 Linux&Unix 分类,时间 2012/10/25
在使用Zabbix的过程中,我们通常会建立一些需要的Screen图形报表来汇总需要监控的Graph。
而下面的两个脚本,则是通过从Zabbix数据库中获取所有的Screen图形参数,提供Zabbix的WEB接口将所有图形保存到本地,然后通过脚本以Email形式发送过来,作为每天的自动报表。
$ sudo mkdir -p /data/script
$ sudo mkdir -p /data/graph
$ sudo vim /data/scripts/save-graph.pl
#!/usr/bin/perl use File::Path; use DBI; my $path = '/data/graph'; if(-e $path) { rmtree($path); } mkdir($path); my $stime = `date +%Y%m%d`; chop($stime); $stime .= '1000'; if( length($stime) != 12 ) { print "Error get date"; exit; } my $period = 86400; # 24 hours my $login = 'admin'; # Zabbix Web User my $pass = 'password'; # Zabbix Web User Password, must be URL Encoded my $cook = "/tmp/cookie"; my $dsn = 'DBI:mysql:zabbix:localhost'; # Connect MySQL DB "zabbix" on localhost my $db_user_name = 'zabbix'; # MySQL DB user my $db_password = 'dbpassword'; # MySQL DB user password my $dbh = DBI->connect($dsn, $db_user_name, $db_password); my $sth = $dbh->prepare(qq{select a.name,a.hsize,a.vsize, b.resourceid, b.width, b.height,b.x,b.y from screens a,screens_items as b where a.screenid=b.screenid and a.templateid<=>NULL order by a.name}); $sth->execute(); my %screens; # Get all graphs by using curl while (my ($name,$hsize,$vsize, $id,$width,$height,$x,$y) = $sth->fetchrow_array()) { if(length($id) > 2){ #print "$id => $ids\n"; my $p = "$path/$name.$hsize.$vsize.$y.$x.$id.png"; my $strcomm = `curl -c $cook -b $cook -d "request=&name=$login&password=$pass&autologin=1&enter=Sign+in" localhost/zabbix/index.php`; $strcomm = `curl -b $cook -F "graphid=$id" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" localhost/zabbix/chart2.php > $p`; } } exit ;
分享一份在Linux上查看底层硬件信息的Perl脚本
由 mcsrainbow 发表在 Linux&Unix 分类,时间 2011/07/22
首先,非常感谢一阵风大哥的无私奉献,通过他提供的脚本,可以非常清晰明白的看到系统的硬件参数信息。
如下图所示:
整个 Perl 脚本有 10870 行,因此就不直接贴在网页中了,大家有需要的可以直接点击此处下载:
http://heylinux.com/download/hwconfig.tar
下载之后,将脚本赋予执行权限直接运行即可:
# chmod +x hwconfig
# ./hwconfig
通过Perl脚本实现邮件客户端进行邮件交互测试
由 mcsrainbow 发表在 Programming 分类,时间 2010/09/02
由于公司目前采用的自建邮件系统部署在内部机房,在网络链路上与国外,以及联通等网络存在着通讯的稳定性问题。
因此,随着企业邮箱使用的越来越频繁,这类问题反应越来越大,主要是国外出差的员工访问不了公司邮件系统,以及与其他公司通信时出现的邮件延迟甚至丢失情况。
因此,为了排除企业邮箱软件本身存在的Bug等造成的影响,特考虑进行一次大量的邮件交互测试,来确定软件本身是否存在问题。
在Linux下有很多办法可以实现,比如用Shell调用邮件本身的命令行指令等,但最好还是通过客户端的方式来实现,因为这种大量的测试行为会被其他邮箱认为是垃圾邮件行为的,把邮件服务器IP给纳入黑名单可不是好玩的。
后来,Cluster群里的好兄弟,UCWEB的罗学,给我共享了一个Perl的脚本,很简单,但是也很好用。利用这个脚本我完成了这样的一个测试工作,顺便提一下,结果很理想,呵呵,网易和搜狐成功接收1000封邮件,一封没落下(把发送邮件的地址加到白名单);而通过网易往回来发的时候到215封时测试机IP就被纳入黑名单了,不过这215封我们也全部成功接收了。
废话不多说了,进入正题:
首先,
通过root用户登录,执行
cpan
进入以后,再执行
install MIME::Lite
install Authen::SASL
这两个包,每个包大概要等个10来分钟的样子才会完全下载并安装好。
脚本内容:
#!/usr/bin/perl -w use strict; use MIME::Lite; use MIME::Base64; use Authen::SASL; foreach my $a ( 1 .. 1000 ) { sleep 10; my $from = 'username@domain.com'; my $passwd = 'password'; my $to = 'username@163.com'; my $messages = $a . ":" . "Hello Rainbow!"; my $msg = MIME::Lite->new( From => $from, To => $to, Cc => 'username@sohu.com', Subject => $a . ":" . 'Hello Rainbow!', Type => 'TEXT', Data => $messages, ); MIME::Lite->send('smtp','smtp.domain.com', Debug =>'1', AuthUser=>$from, AuthPass=>$passwd, ); $msg->send; }
近期评论(Recent Comments)
问题找到啦,非常感谢
感谢提供解决问题的思路。我的情况是因为文件有损坏,使用hotcopy 会出现“svnadmin: Can't open file '/SVN_PATH/db/revprops/24/24685'...
大神,您好。 你的博客 都是使用什么软件和主题搭建的哈?关注你的博客很久了。 也想自己搭建一个 总结 反思自己。谢谢大神...
int result = 0; for (int i = 0; i < 101; i++) { result ^= data[i]; ...
如果确认所有的表都是INNODB引擎,没有任何MyISAM表,还可以加上--no-lock参数。...
讲的不错, mark
答案无疑是本地端口转发了,它的命令格式是: ssh -L :: 原来是这个原理...