我们在Perl添加了一些交互和数据库的检测,主要用于IP、MAC、姓名、房间等信息的采集,接下来是武林技术频道小编给大家介绍的perl 采集入库脚本分享,一起来学习吧!
#!/usr/bin/perl -wuse 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'”;
看了武林技术频道的介绍后,想必大家已经知道了perl 采集入库脚本分享,相信大家都知道怎么操作了吧!
新闻热点
疑难解答
图片精选