perl 采集入库脚本分享
作者:junjie 发布时间:2023-09-13 08:45:40
标签:perl,采集,脚本
#!/usr/bin/perl -w
use DBI;
use POSIX qw(strftime);
my $dbh = DBI->connect(“DBI:mysql:shencan:111.1.32.153:3306″,”shencan”,”shencan”);
#my $sql = “select * from shencan.LVS”;
#my $sth = $dbh->prepare($sql);
#$sth->execute();
my $HOSTNAME=`hostname`;
chomp($HOSTNAME);
my $type;
my $hostinfo;
#while($hostname = $sth->fetchrow_hashref())
#{
# print “$hostname->{hostname} $hostname->{hostip}\n”;
#}
#my @value;
#while(@value = $sth->fetchrow_array())
#{
# print “@value\n”;
#}
#my $SQL = “update shencan.LVS set node='CBN_CQ' where hostname='CBN-CQ-1-3Z2′”;
#my $STH = $dbh->prepare($SQL);
#$STH->execute();
#####MYSQL UPDATE SUB START #####
sub update{
my $sql = shift @_;
my $mysqlupdate = $dbh->prepare($sql);
$mysqlupdate->execute();
}
#####MYSQL UPDATE SUB END #####
#sub SCselect {
# my $sql = shift @_;
# my $myselect = $dbh->prepare($sql);
# $myselect->execute();
# while($hostinfo = $myselect->fetchrow_hashref()) { print “$type\n” ;print “$hostinfo->{$type} \n” ;}
#}
#####MYSQL SELECT SUB START#####
sub shencan {
my @shencan = @_;
foreach $type (@shencan){
my $sql = “select * from shencan.FC where hostname='$HOSTNAME'”;
my $myselect = $dbh->prepare($sql);
$myselect->execute();
while($hostinfo = $myselect->fetchrow_hashref()) {
return “$hostinfo->{$type}” ;
}
}
}
#####MYSQL SELECT SUB END######
#####MYSQL SELECT START #######
my $FC =shencan “fcversion”;
chomp($FC);
my $os = shencan “OS”;
chomp($os);
my $arch = shencan “arch”;
chomp($arch);
my $fdns =shencan “fdnsversion”;
chomp($fdns);
my $ng = shencan “ngversion”;
chomp($ng);
my $amr =shencan “amrversion”;
chomp($amr);
my $oh =shencan “ohversion”;
chomp($oh);
my $dm = shencan “dmversion”;
chomp($dm);
my $cpisbin = shencan “cpisbinversion”;
chomp($cpisbin);
my $node = shencan “node”;
chomp($node);
my $type1 =shencan “type”;
chomp($type1);
#####MYSQL SELECT END######
####CHECK NG VERSION START#####
my $NG =`rpm -q NG`;
chomp($NG);
####CHECK NG VERSION END#####
####CHECK AMR VERSION START#####
my $AMR =`rpm -q AMR`;
chomp($AMR);
####CHECK AMR VERSION END#####
####CHECK OH VERSION START#####
my $OH =`rpm -q OH`;
chomp($OH);
####CHECK OH VERSION END#####
####CHECK DM VERSION START#####
my $DM =`rpm -q DM`;
chomp($DM);
####CHECK DM VERSION END#####
####CHECK MFTT VERSION START#####
my $MFTT =`rpm -q MFTT`;
chomp($MFTT);
####CHECK MFTT VERSION END#####
####CHECK CPISBIN VERSION START#####
my $CPISBIN = `rpm -q CPISBIN`;
chomp($CPISBIN);
####CHECK CPISBIN VERSION END#####
####CHECK NODE START#####
my @NODE=split(/-/,$HOSTNAME);
$NODE = “$NODE[0]_$NODE[1]“;
####CHECK NODE END#####
####CHECK ARCH STAR #####
my $ARCH=`arch`;
chomp($ARCH);
#####CHECK ARCH END #####
####CHECK EP53 STATUS AND UPDATE START#####
my $ep53 =`dig \@127.0.0.1 www.qq.com >/dev/null && echo ok||echo bad`;
chomp($ep53);
update “update shencan.FC set ep53='$ep53′ where hostname='$HOSTNAME'”;
####CHECK EP53 STATUS AND UPDATE END#####
####CHECK EP80 STATUS AND UPDATE START#####
my $GW=`route -n |awk ‘\$1==”0.0.0.0″{print \$2}'|awk -F”.” ‘{print \$1″.”\$2″.”\$3}'`;
chomp($GW);
my $IP=`ip a|grep inet|grep $GW|awk -F”[ /]” ‘{print\$6}'`;
chomp($IP);
my $ep80 =`curl -H “Host:www.qq.com” -o /dev/null -s -w “%{http_code}” http://$IP`;
chomp($ep80);
update “update shencan.FC set ep80='$ep80′ where hostname='$HOSTNAME'”;
####CHECK EP80 STATUS AND UPDATE END#####
print “NG: $NG ARM: $AMR OH: $OH DM: $DM MFTT:$MFTT CPISBIN: $CPISBIN\n”;
print “$HOSTNAME NODE: $NODE OS: $os arch: $arch FC: $FC fdns: $fdns ng: $ng\n”;
#####CHECK OS START######
sub OS {
open (OS,”</etc/issue”);
@line =<OS>;
$line= $line[0];
chomp($line);
my @os =split(/\s+|\(|\)/,$line);
if($os[0] ge “Red”){
$SC = “REHL$os[6].$os[10]“;
}else{
$SC = “$os[0]$os[2]“;
}
}
OS;
close(OS);
#####CHECK OS END######
######CHECK FDNS OR NAME VERSION START######
open (FDNS,”</etc/ChinaCache/app.d/cpisbm.amr”);
while(<FDNS>){
if(/RestartCmd/){
my @fc1 =split(/\s+/,$_);
my $FC =”$fc1[2]“;
if($FC ge “named”){
$FCVER=`/usr/sbin/named -v`;
chomp($FCVER);
my @FC1 =split(/\s+/,$FCVER);
$FCVER1=”$FC1[0]$FC1[1]“;
}else{
$FCVER=`/FlexiDNS/application/sbin/fdns -v`;
chomp($FCVER);
my @FC1 =split(/\s+/,$FCVER);
$FCVER1=”$FC1[0]$FC1[1]“;
}
}
}
close(FDNS);
######CHECK FDNS OR NAME VERSION END######
#####CHECK FCVERSION AND TYPE START######
open (FC,”</etc/ChinaCache/app.d/cpisfc.amr”);
while(<FC>){
if(/RestartCmd/){
my @squid =split(/\s+/,$_);
my $SQUID =”$squid[2]“;
if($SQUID ge “squid”){
$SQUIDVER=`/usr/local/squid/sbin/squid -v|head -n 1 |awk ‘{print “V”\$4}'`;
chomp($SQUIDVER);
$TYPE=”FC5″;
}else {
$SQUIDVER=`/usr/local/flexicache/sbin/flexicache -v|awk ‘{print \$3}'`;
chomp($SQUIDVER);
$TYPE=”FC6″;
}
}
}
close(FC);
#####CHECK FCVERSION AND TYPE END######
####Change MYSQL #######
if($SQUIDVER eq $FC){
}else{
update “update shencan.FC set fcversion='$SQUIDVER' where hostname='$HOSTNAME'”;
}
if($NG eq $ng){
}else{
update “update shencan.FC set ngversion='$NG' where hostname='$HOSTNAME'”;
}
if($DM eq $dm){
}else{
update “update shencan.FC set dmversion='$DM' where hostname='$HOSTNAME'”;
}
if($AMR eq $amr){
}else{
update “update shencan.FC set amrversion='$AMR' where hostname='$HOSTNAME'”;
}
if($OH eq $oh){
}else{
update “update shencan.FC set ohversion='$OH' where hostname='$HOSTNAME'”;
}
if($CPISBIN eq $cpisbin){
}else{
update “update shencan.FC set cpisbinversion='$CPISBIN' where hostname='$HOSTNAME'”;
}
if($NODE eq $node){
}else{
update “update shencan.FC set node='$NODE' where hostname='$HOSTNAME'”;
}
if($TYPE eq $type1){
}else{
update “update shencan.FC set type='$TYPE' where hostname='$HOSTNAME'”;
}
if($FCVER1 eq $fdns){
}else{
update “update shencan.FC set fdnsversion='$FCVER1′ where hostname='$HOSTNAME'”;
}
if($SC eq $os){
}else{
update “update shencan.FC set OS='$SC' where hostname='$HOSTNAME'”;
}
if($ARCH eq $arch){
}else{
update “update shencan.FC set arch='$ARCH' where hostname='$HOSTNAME'”;
}
my $time = strftime “%Y-%m-%d_%H:%M:%S”, localtime;
chomp($time);
update “update shencan.FC set lmtime='$time' where hostname='$HOSTNAME'”;


猜你喜欢
- 1. 切片不执行越界检查和报错下面代码的输出结果将是什么?list = ['a', 'b', 'c&
- 项目的一个需求是解析nginx的日志文件。简单的整理如下:日志规则描述首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式:
- loss函数如何接受输入值keras封装的比较厉害,官网给的例子写的云里雾里,在stackoverflow找到了答案You can wrap
- 下面是用python写的,使用lxml来做html分析,从网上看到的,说是分析速度最快的哦,不过没有验证过。好了,上代码。 import u
- 通过界面设计上是能手工操作的,无法达到我批量修改几千台服务器。 因为此了一个脚本来批量执行。 环境:redgate + mssql 2008
- 一、requestsrequest的说法网上有很多,简单来说就是就是python里的很强大的类库,可以帮助你发很多的网络请求,比如get,p
- Dreamweaver中一直变色的超级链接,css+javascript实现超级链接变色,当鼠标移动到链接上时,链接的颜色不停闪烁变色。&l
- 工欲善其事,必先利其器.python是解释型的语言,但是在windows下如果要执行程序的话还得加个python shell的话,
- 这篇文章主要介绍了Python遍历字典方式就实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 笔者在网站开发中,采用PHP4.0+MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开
- 本文实例讲述了Python单向链表和双向链表原理与用法。分享给大家供大家参考,具体如下:链表是一种数据结构,链表在循环遍历的时候效率不高,但
- NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供
- 本文实例讲述了JavaScript预解析及相关技巧。分享给大家供大家参考,具体如下:变量同样,以这两个小例子的错误对比提示开始。alert(
- 今天把Ext.js源码又读了一遍,不过这次比较认真。看完代码,有了不少收获也遇到不少问题。主要总结如下:1、document.execCom
- 本文实例为大家分享了js浏览器倒计时跳转页面效果,供大家参考,具体内容如下效果图:<!DOCTYPE html><html
- 一、在控制器中引用:use cache;二、基本方法及使用1、put() 键 值 有效时间(分钟)Cache::put('key1&
- 背景在业务数据统计分析中基本都会涉及到各省区的分析,数据可视化是数据分析的一把利器,这些省区的数据一般会用地图可视化出来,这样一些规律可以被
- 前言虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Req
- 前言大家都知道,Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval
- 一、基本使用最近研究了一下 el-upload组件 踩了一些小坑 写起来大家学习一下很经常的一件事情 经常会去直接拷贝 elem