perl 获取监控数据(续)

简介:

上次的脚本只是将监控的数据展示在终端上,这次增加了一个功能:数据展示在终端的同时,存入到数据库中

code:

 
  1. #!/usr/bin/perl -w 
  2.  
  3. use strict; 
  4. use utf8; 
  5. use LWP::Simple; 
  6. use DBI; 
  7.  
  8. my $dsn = 'DBI:mysql:database=monitor;host=localhost;port=3306'
  9. my $dbh = DBI->connect($dsn,'root','test',{PrintError=>0,RaiseError=>1}) 
  10.                         or die "Can't connect to mysql" . DBI->errstr; 
  11.  
  12. my $table = qq/CREATE TABLE IF NOT EXISTS monitor ( 
  13.                room char(20) not null, 
  14.                in_bytes varchar(100) not null, 
  15.                out_bytes varchar(100) not null, 
  16.                date timestamp not null 
  17.                ) 
  18.               /; 
  19.  
  20. my $sth = $dbh->prepare($table); 
  21.    $sth->execute(); 
  22.    $sth->finish(); 
  23.  
  24. while (1) { 
  25.        my $url = shift || "http://xxx.xxx.xxx.xxx"; 
  26.        my $content = get $url; 
  27.        my @url = split /\n/,$content; 
  28.        my ( $i,$str ) = ( 0,\@url ); 
  29.        print scalar localtime,"\n"; 
  30.  
  31.        while ( $i < scalar @$str ) { 
  32.  
  33.              if ( @$str[$i++] =~ /杭州机房1|杭州机房2|上海机房1|上海机房2/ ) { 
  34.                  binmode STDOUT,'encoding(utf8)'; 
  35.                  my $room = $&; 
  36.                  print STDOUT "$&\n"; 
  37.                  $i += 16; 
  38.                  my ($in) = @$str[$i++] =~ /(?:.*)\>(\S*\s*\S*).*\<\/td\>/; 
  39.                  printf '%s',"\tCurrent In: $1\t"; 
  40.                  $i += 5; 
  41.                  my ($out) = @$str[$i++] =~ /(?:.*)\>(\S*\s*\S*).*\<\/td\>/; 
  42.                  printf '%s',"Current Out: $1\n\n"; 
  43.                  my ($sec,$min,$hour,$day,$month,$year) = (localtime(time))[0..5]; 
  44.                  $month++;$year+=1900; 
  45.                  my $date = sprintf "%04d-%02d-%02d %d:%d:%d",$year,$month,$day,$hour,$min,$sec; 
  46.  
  47.                  my $data = qq/INSERT INTO monitor VALUES 
  48.                               ("$room","$in","$out","$date")/; 
  49.                     $sth = $dbh->do($data); 
  50.              } 
  51.  
  52.        } 
  53.  
  54. print '-' x 70,"\n"; 
  55. sleep 900; 
  56.  
  57.  
  58. $dbh->disconnect(); 

代码有些改动,主要是之前的一些写法不太好。

数据库中的图

 
  1. +--------------------+-------------+------------+---------------------+ 
  2. | room               | in_bytes    | out_bytes  | date                | 
  3. +--------------------+-------------+------------+---------------------+ 
  4. | xxxx        | 85.9 Mb/s   | 99.5 Mb/s  | 2011-11-04 10:29:49 | 
  5. | xxxx        | 14.1 Mb/s   | 80.7 Mb/s  | 2011-11-04 10:29:49 | 
  6. | xxxx       | 190.3 Mb/s  | 332.6 Mb/s | 2011-11-04 10:29:49 | 
  7. | xxxx       | 8968.4 kb/s | 119.9 Mb/s | 2011-11-04 10:29:49 | 
  8. | xxxx        | 384.0 b/s   | 576.0 b/s  | 2011-11-04 10:29:49 | 
  9. +--------------------+-------------+------------+---------------------+ 

 本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/705854,如需转载请自行联系原作者

相关文章
|
人工智能 自然语言处理 API
MCP与A2A协议比较:人工智能系统互联与协作的技术基础架构
本文深入解析了人工智能领域的两项关键基础设施协议:模型上下文协议(MCP)与代理对代理协议(A2A)。MCP由Anthropic开发,专注于标准化AI模型与外部工具和数据源的连接,降低系统集成复杂度;A2A由Google发布,旨在实现不同AI代理间的跨平台协作。两者虽有相似之处,但在设计目标与应用场景上互为补充。文章通过具体示例分析了两种协议的技术差异及适用场景,并探讨了其在企业工作流自动化、医疗信息系统和软件工程中的应用。最后,文章强调了整合MCP与A2A构建协同AI系统架构的重要性,为未来AI技术生态系统的演进提供了方向。
1771 62
|
存储 开发框架 小程序
【全栈小程序开发路线】手把手教你入门小程序开发,小白必看!
以下内容是结合我项目中实战经验,踩坑记录,大量时间学习小程序的积累,总结分享给大家。 学习路线包括前端基础、小程序开发框架、UI组件库、云开发、周边生态以及插件这几个纬度,学完这些,你也能全栈开发一个属于自己的产品。
1238 0
|
JavaScript 前端开发
Vue的高级表格组件库【vxe-table】
Vue的高级表格组件库【vxe-table】
1219 0
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
2615 1
|
Java BI 数据安全/隐私保护
FineReport帆软设计器,远程连接服务器
FineReport帆软设计器,远程连接服务器
1483 0
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之使用连接串模式新增PostgreSQL数据源时遇到了报错"not support data sync channel, error code: 0001",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
云安全 供应链 Kubernetes
阿里云荣获可信云容器安全能力先进级认证, ACK/ACR为企业级安全护航
在7月29日的2020可信云大会上,信通院发布了国内云厂商的容器安全评估结果。阿里云容器服务荣获最高级别先进级可信云安全能力认证,特别是在最小化攻击面,二进制镜像验签名,密文的BYOK加密等能力上国内领先,达到国际先进水平。
1517 0
阿里云荣获可信云容器安全能力先进级认证, ACK/ACR为企业级安全护航
|
存储 Java 容器
Java进阶:【集合】认识集合了解简单语法 迭代器原理分析
Java进阶:【集合】认识集合了解简单语法 迭代器原理分析
Java进阶:【集合】认识集合了解简单语法 迭代器原理分析
|
消息中间件 缓存 运维
Java 线程池 8 大拒绝策略,面试必问!
Java 线程池 8 大拒绝策略,面试必问!
427 0
Java 线程池 8 大拒绝策略,面试必问!
|
存储 消息中间件 NoSQL
现代IM系统中的消息系统架构 - 架构篇
前言 IM全称是『Instant Messaging』,中文名是即时通讯。在这个高度信息化的移动互联网时代,生活中IM类产品已经成为必备品,比较有名的如钉钉、微信、QQ等以IM为核心功能的产品。当然目前微信已经成长为一个生态型产品,但其核心功能还是IM。
29270 3