Perl语言

2024-09-09

Perl语言(共4篇)

Perl语言 篇1

0、引言

互联网快速发展到今天, 带给了人们快捷的信息传达和广泛的信息发布。为了使浏览者及时了解最新的信息, 网站需要不断地更新其信息发布的内容。传统手工方式制作网页的过程如下:手工采集信息;利用HTML编辑软件 (如Dreamweaver或Front Page等) 或手工方式修改HTML文件, 即制作网页;利用FTP上传工具软件, 把制作好的网页文件上传到WEB服务器。基于Web的信息发布系统, 是将网页上需要经常变动的信息进行集中管理, 并通过信息的某些共性进行分类, 最后系统化、标准化发布到网站上的一种网站应用程序[1]。

根据我们学院的特点, 门户网站首页栏目涉及学院的多个部门的工作, 对于需要大量和快速更新内容的网站栏目, 如何保证网站对信息更新的需求, 方便各个部门信息采集员更新自己的栏目信息, 同时保证运行的稳定性和安全性, 手工方式显然是不可取的, 学院需要一种系统工具来方便高效地更新和管理网站, 基于此我们开发了适合我院特点的信息发布系统。

1、信息发布系统的总体设计

该信息发布系统采用web方式, 即B/S方式, 系统只需安装部署在服务器上, 通过Internet网就能访问和使用该系统, 做到一次安装, 处处使用。这种方式适合于用户较多, 使用地点没有限制的情形, 适合于我院信息发布、管理的特点。在目前Web页编程中, 最为盛行的技术是CGI、ASP、PHP、JSP等, 其中CGI是Common Gateway Interface的简称。CG脚本叫服务器端脚本或网关脚本, 一种基于浏览器的输入、在Web服务器上运行的程序的方法。其主要的功能是在WWW环境下, 由从客户端传递一些讯息给WWW Server, 再由WWW Server去启动所指定的程序码来实时地完成特定的工作。CGI包含了Perl、C/C++、JAVA等技术, 其中Perl语言有非常杰出的文字处理能力, 能轻易地产生HTML文件, 尤其是它具有完整的正确表达式语法, 大大地增强了perl处理字串的能力。同时Perl是一种解释性语言, 因此可以避免在各种不同系统上, 还需要重新编译的麻烦。基于Perl容易处理字符串的传递, 而CGI程序最重要的工作就是处理字串, 所以在操作系统是Aix的服务器上, 笔者选择了Perl语言来编写CGI程序。

本系统的工作流程:根据系统需求分析, 将后台用户与管理员登录的页面集成在首页中, 通过后台程序进行权限验证, 登录后自动进入各自有权限的页面进行操作, 具体的系统工作流程如图1所示。

2、具体实现

本系统主要分为信息发布管理模块和系统管理模块。主要功能有:允许用户登录系统并提交新闻, 只需要经过审核的步骤即可发布。其次, 对于信息提供了类目管理, 并可以为信息类目设置具有相应管理权限的管理员, 使信息管理功能实现分布而非集中, 有效减少了管理员的工作量和不必要的失误。

系统所需硬件环境:服务器基本要求:CPU P42.7GHz以上, 内存1024 MB以上, 硬盘120GB以上。

操作系统:Perl可以运行在安装Apache服务器的任何操作系统上, 推荐服务器操作系统使用类Unix操作系统上。

2.1 信息发布和管理模块:

本模块可以分为添加信息、信息审核、信息管理、信息分类管理四个部分。在设计时, 因为perl语言在文本操作上具有特殊的快捷和便利, 因此我们采用文本文件来存取数据。在存储结构上, 信息标题、分类来源等头部信息和信息内容分开存储, 分别存储在index和news两个目录下。在index目录下采用信息头部信息分门别类地存在不同的类别文件中。例如, “学院公告”文件中存放所有的“学院公告”信息头。存储格式为信息索引号、信息标题、标题颜色、是否审核通过、发布者ip地址、信息源、关键字、发布日期、时间等。在news目录下, 是以信息索引号为文件名的信息内容。信息索引号是通过一个函数自动生成的, 包含信息发布的日期、时间和当前的进程等信息。

2.1.1 信息添加模块的设计和实现

采用表单制作信息添加页面, 包含图片上传、文字粘贴和添加链接等功能。当信息添加完毕, 提交时向本页提交信息头部和信息内容等信息。通过以下语句接受并完成信息的添加。

#把信息内容写入news目录下的新生成的一个信息索引号文件中。

图片新闻上传:图片新闻上传采用两个步骤:一是先上传图片到服务器的某个指定目录, 二、在信息内容中添加链接语句。

上传图片的语句如下:

添加链接的语句是通过调用Javaspript语句实现的。其中f1为表单名, news_content为编辑信息的文本域的名称。

2.1.2 信息管理模块的设计和实现

信息管理模块包括如下几个功能, 信息修改、信息删除和信息审核等几个功能。

信息修改和信息添加有一样的编辑界面和相似的提交处理逻辑, 两者的不同在于信息修改时需要首先读取信息的内容和原有的设置信息等, 并显示在编辑信息的页面中, 并且在提交时需要执行信息的更新操作而不是新增信息。

信息删除实现从信息类别文件中删除信息头部信息, 可以实现一次性删除多个文件。

如果用户仅仅具有添加信息的权限, 则此信息在提交后, 还需要经过具有信息审核权限的用户的审核才能进入发布区。信息是否审核通过取决于信息数据的isacceptx属性。

上述语句可以实现一次性的审核通过多条信息, 只有信息审核通过的数据才能在新闻栏目上显示。如把审核通过信息变为不通过, 只需把isacceptx置零就行了。

2.2 系统管理

系统管理模块主要包含以下功能:

2.2.1 信息分类

学院的信息来源于多个部门, 每个部门不定时地把各自的工作动态进行发布, 所以对信息进行了分类管理。对分类的管理有类别的添加、删除和修改。分类信息存储在config目录下的newsclass的文件中, 包括类别ID和类别名称两个字段。

类别的修改实现代码如下:

类别的删除、添加和修改代码基本相似。

2.2.2 用户管理

本系统提供了对用户的增加、删除、修改等功能。用户的信息存储在passwd文件中, 添加删除用户过程实际上就是对文件的读取、匹配和写入。

2.2.3 日志

日志功能记录了日期、用户名、密码、IP地址、是否是合法用户等信息。实现记录日志语句如下:

3、小结

本文阐述了以B/S方式设计的信息发布系统, 分析了系统流程, 实现了功能模块。该信息发布系统为我院新闻栏目编辑和更新的工作带来了很大便利。简化了制作网页的具体过程:手工采集信息或自动采集信息;打开要修改的网页的模板, 把采集的信息放入相应位置, 利用排版功能对信息进行排版;把修改好的网页通过信息发布系统自动发布到WEB服务器上。本系统的主要优点[1]如下:

(1) 、操作简单:系统把网页的外部呈现和内部技术实现、日常信息发布和系统开发维护分离开来, 使日常工作人员的操作变得非常简单。这是所有网站维护和编辑人员梦寐以求的。

(2) 、安装简便:系统使用纯WEB平台, 无需安装客户端软件, 简化了系统实施过程, 从而保证了系统的一致性, 同时增强了系统的可维护性。

(3) 、异地发布:系统工作服务器直接与Internet相接, 能够实现网站信息的异地发布, 使编辑人员的工作方式更加灵活。

本系统还存在很多不足, 如交互性能有待提高、界面较为粗糙、功能还需要进一步扩展和完善等。H

参考文献

[1]胡轶众.基于.NET的动态信息发布系统的设计与实现[C].四川:重庆大学, 2007

Perl语言 篇2

我们在很多地方都可以看见要求把 Perl 程序的属性改为 755 ,文本属性改 666 ,目录属性改777 等,这到底是什么意思?它们各代表什么意思?为什么要这样设置?如何设置?哦,这么多问题呀,让我慢慢道来 ^_^

请注意:以下属性的设置是Unix 类操作系统必须的,如果你用的是 WIN95/98 操作系统,则无需任何属性的设置(如果在WIN NT/ 上采用了 NTFS 格式的话,请注意设置好 Perl CGI 相应目录的读写权限,一般是在相应目录上添加 Everyone 用户,并设置其可写即可),

1. Perl 程序和目录属性一般设置为多少?

一般来说,在 Unix 的服务器中,Perl CGI 程序的属性一定要设为755,而与 Perl 有关的数据文件,一般要设为 666 ,和 Perl 有关的目录,一般设置为 775 或 777。而在 WIN95/98/NT 下,由于 Perl 程序不是依靠属性来完成运行的,所以不必修改。

2. 755,666 等属性是什么意思?怎么算出来的?

在 Unix 中,属性值分为 OWNER、GROUP、PUBLIC 三项(其实这每项表明的是对应用户或用户组对此文件或目录的权限),而每项都可以设置权限为Read、Write、Execute(也就是权限为可读、可写、可执行),其中 Read 的值为 4 ,Write 的值为 2 ,Execute 的值为 1。那么755 就表示:

OWNER 用户(就是创建此文件或目录的用户)有 Read、Write、Execute 权限,它们的值加起来等于 7

GROUP 用户(就是创建此文件或目录的用户所在的用户组)有Read、Execute 权限,它们的值加起来等于 5

PUBLIC 用户(就是访问此文件或目录的用户)有 Read、Execute权限,它们的值加起来等于 5

666,777 也可以用类似的办法推算出来,你现在明白了吗?

对于目录来说,由于默认属性是 755 ,因此如果你的Perl 程序需要自己来建立子目录的话,就必须要有 Write

属性,所以相应目录的属性必须要改为 777,

最后还要强调一点,当你用 FTP 或 TELNET 登陆修改你的Perl 的时候,你是 OWNER 用户,而你用浏览器访问你的 Perl 程序的时候,你是 PUBLIC 用户。

3. 如何用 TELNET 或 FTP 来设置 Perl 程序的属性?

TELNET:登陆成功后,使用命令 chmod <属性值>

<文件名>即可。

FTP:我们以 CuteFTP 为例,其实其他的 FTP 软件的修改属性用法基本是一样的。

a) 首先,使用 CuteFTP 连接你的服务器,并选择你将要修改属性的文件。

b) 然后,用鼠标右键点击需要修改属性的文件,会弹菜单

c) 接着选择 Change file attributes(CuteFTP

4.0 版以上请选择 CHMOD...),会出现窗口,根据需要选择复选框,或直接在

Manual 文本框中输入适当的属性值。

d) 最后点一下 OK ,就 OK 了。 :D

Perl语言 篇3

1 攻击原理

通过发送半连接 (HTTP请求) 来保持连接的畅通, 并周期性发送HTTP Headers来避免套接口关闭来达到消耗目标主机资源, 关闭WEB服务的目的。由于有效地将攻击连接伪装为合法连接从而躲过了侦测系统的防御。同时当攻击正在进行时, 日志文件并不会被写入, 直到连接请求完毕。所以攻击者能够使目标在一段时间内服务无法被访问, 同时攻击行为不会被管理员发现。

2 主要模块划分

Perl脚本语言开发的Do S工具主要由两大部分组成, 分别是扫描模块和攻击模块。扫描模块包括目标主机扫描模块, 攻击主机扫描模块, 目标主机连接超时时间测试扫描模块。攻击模块包括常规HTTP Dos攻击模块, HTTPS Dos攻击模块, HTTPReady Bypass模块, Cache avoidance模块。

2.1 扫描模块

2.1.1 目标主机扫描模块

探测目标主机的服务是否可用及是否采用超线程技术, 通过向目标服务器发送合法请求来实现。

2.1.2 本地主机扫描模块

探测攻击者的主机是否采用超线程技术。由于超线程技术的特点, 使得拥有超线程技术的攻击者的攻击效果会比未拥有的要好很多。

2.1.3 目标主机连接超时时间测试扫描模块

找出目标机器服务的连接超时时间, 这个时间对于攻击来说至关重要, 将攻击者发送的半连接超时时间设置得与被攻击者的越接近, 攻击效果越好, 但必须小于被攻击者的连接超时时间, 否则攻击失效。

2.2 攻击模块

2.2.1 HTTP Do S攻击模块

通过向目标周期性地发送请求, 导致目标服务器无法响应合法用户请求。攻击目标的超时时间越短它的资源被消耗得也越快。连接数与攻击目标的连接数越接近越好, 因为这能减少的尝试次数以及相关的带宽。

2.2.2 HTTPS Do S攻击模块

实现方式与HTTP Do S攻击模块相似, 不同之处在于本模块需要对数据通过协议加密后再发送。

2.2.3 HTTPReady Bypass模块

通过将发送的请求消息从GET改为POST来实现。这是在HTTP Do S失效的情况下使用, 实现方法为把GET请求方法改为POST请求方法, 这样就可以绕过HTTPReady的保护。

2.2.4 Cache avoidance模块

本通过改变请求消息头使得目标服务器的溢出, 从而拒绝服务。

3 难点实现

3.1 扫描模块

本工具的扫描模块分为目标主机扫描模块, 攻击者主机扫描模块, 目标主机连接时间扫描模块。

3.1.1 攻击主机扫描模块

此模块的主要任务是通过调用Confi g模块来检测主机是否使用超线程技术, 代码为:

$Confi g{usethreads}

如果使用则执行代码:

攻击者的主机是否采用采用超线程技术对于攻击效果而言影响比较大, 因为攻击原理是向目标主机发送半HTTP Request请求从而导致目标主机拒绝服务, 所以攻击连接数对攻击效果的影响至关重要, 连接数越多攻击效果越好, 所以拥有超线程技术的主机才产生的攻击效果会更好。

3.1.2 目标主机扫描模块

此模块的主要任务是检测目标主机的HTTP服务是否可用, 具体方法为向服务器发送一个合法的GET请求消息:

如果套接字建立成功而且请求得到合法响应, 则说明目标服务器的服务工作正常, 则可以进行下一步操作。

3.1.3 目标主机连接时间扫描模块

此模块的主要功能为探测目标服务器上的超时时间, 这个选项是手动。了解目标机器的超时时间是非常必要的, 因为攻击目标的超时时间越短则资源被消耗得也越快, 但如果设置得小于被攻击电脑的连接超时时间, 则又容易导致攻击效果锐减。以下为具体实现代码:

其中变量sock只指的HTTP Request的底层通信连接, 这里为TCP连接, 当然, 如果需要改变为UDP连接可以直接修改相关代码。最后, 测试的大致超时时间为变量delay的值, 单位为秒。

3.2 攻击模块

攻击模块包括HTTP Do S攻击模块, HTTPS Do S攻击模块, HTTPReady Bypass模块, cache avoidence模块。它的攻击流程如图1所示。

3.2.1 HTTP Do S

这个攻击模块是本工具的基本攻击模块, 它通过设置三个参数:-timeout, -num, -tcpto然后借由这些参数向服务器发动袭击, timeout参数是指目标服务器HTTP Request的超时时间, 这里也把它作为发送攻击的间隔时间。这样设置使得攻击者所发起的HTTP Request符合规范, 攻击的隐蔽性大大增强, 而且还不会导致主机负载过高而向管理员告警。这里使用GET请求方法向目标发起连接。实现攻击的前提是要在攻击者与目标服务器间建立完整的TCP连接。

3.2.2 HTTPS Do S

此模块针对采用了HTTPS协议的WEB服务器。它通过用IO::SOCKET::SSL构造一个符合SSL3.0协议的sock对象来伪装自己, 从而欺骗主机, 成功发送HTTP Request半连接, 实现为:

3.2.3 Cache avoidance

根据RFC2616的描述, HTTP1.1通常应用于能通过采用缓存技术提高性能的分布式信息系统。HTTP/1.1中缓存可以在许多情况下排除发送请求和发送完整响应。前者减少了网络回路的数量;利用一个“过期 (expiration) ”机制来达到此目的。后者减少了网络应用的带宽;用“验证 (validation) ”机制来达到此目的。利用这个特点, 我们新增了一个功能, 即Cache avoidance。核心思路就是发送大量服务器地址相同但是URL中请求文件的文件名不同的GET请求消息来消耗网络资源。因为这样可以“绕过”缓存机制, 使得攻击者发送的每一个请求都会到达目标机器, 而且由于页面不存在, 每一次请求都会消耗目标WEB服务器的资源, 最终导致Do S。具体的实现方法利用了Perl强大的正则表达式和srand () 函数以及rand () 函数。具体代码如下:

4 功能、性能测试

4.1 功能测试

4.1.1 系统平台

Fedora 14。

4.1.2 目标服务器系统

版本为httpd-2.2.10-2的Apache服务器。

4.1.3 测试环境

在一台物理主机上建立一个虚拟机, 它的操作系统为Fedora 14, 物理主机的操作系统为Windows XP sp3。

各个模块的功能测试如表1所示。

测试结果表明攻击效果较好, 但HTTPS Do S有时会攻击失效, 这还需要改进。总体而言, 攻击效率较高, 设计思路清晰, 特别是在攻击时不会造成目标服务器负载明显上升, 也不会造成内存使用明显增加, 而且还不会对其它无关联服务造成损害, 这是设计之初没有想到的意外惊喜。

4.2 性能测试

4.2.1 测试环境

FEDORA 14, INTEL (R) CORE (TM) DUOCPU T2350@1.86GHZ 1.86GHZ, 1.96GB内存。

4.2.2 具体过程

建立500个SOCKET连接, DOS服务器192.168.1.123的80端口, 设置CONNECTION的超时时间为200秒。如果不知道连接超时时间, 那么就用下面的命令, 让COBRA自动完成。

SLOWLORIS.PL-DNS 192.168.1.123-PORT 80-TEST。

这是一个慢启动的过程, 得出测试数据需要一定的时间。所以建议首先用NMAP之类的工具得出目标机器的WEB服务器操作系统版本, 然后根据自己的经验估计一个时间。TIMEOUT值太大, 可能被服务器主动断开连接, 太短发送的数据包就越多, 攻击者的主机压力太大。DOS效果如表2所示。

由于作者时间、精力、水平有限, 所以只能列出少部分能够被攻陷和不能够被攻陷的服务器操作系统名称。能够攻陷的有:Apache 1.x, Apache 2.x, dhttpd, lighttpd。目前还无法攻陷的有:IIS6.0, IIS7.0, nginx, Cherokee, Squid。值得注意的是本工具运行在Windows系列操作系统上的攻击效果不太好, 主要是限制了最大连接数, 所以应尽量运行在类似UNIX的操作系统上。

5 结论

本文详细阐述了Perl语言开发的针对WEB服务的Do S工具的设计与实现。从测试结果中可以得知, 此工具基本达到了设计要求, 能够实现利用单一机器对目标服务器的WEB服务进行打击, 打击隐蔽性非常高, 对目标服务器CPU、内存的负载影响非常小, 而且在攻击时日志文件不会产生记录。但由于一些技术上的问题, 本工具对于一些应用较广的WEB服务器的攻击还是不能很好实现, 还需要在以后的版本中加以改进, 其亮点就在于用Perl编写, 利用它的一些强大功能使得工具小巧精悍, 其中的Cache avoidance模块极具特色, 它利用了HTTP协议的一些特点而造成目标网络资源的大量消耗。

摘要:本文设计并实现了一个基于Perl脚本语言的Dos攻击工具, 利用半连接原理攻击WEB服务。本攻击工具分扫描模块和攻击模块, 具有HTTP Do S, HTTPS Do S, Cache avoidance和HTTPReady Bypass攻击功能。充分利用系统的超线程性能和Perl脚本特性, 代码量少, 对Linux下的WEB服务攻击效果较好。

关键词:Dos,Perl,攻击,工具

参考文献

[1]Wang Y, Lin C, Li Q L, et al.A queueing analysis for the denial of service (Do S) attacks in computer networks[J].Computer Networks, 2007, 51 (12) :3564-3573.

[2]陈诚, 孙一品, 钟求喜等.基于通用多核平台的入侵检测系统研究[J].计算机科学, 2012, 39 (3) :71-74.DOI:10.3969/j.issn.1002-137X.2012 (03) :015.

perl 采集入库脚本 篇4

这篇文章主要介绍了perl 采集入库脚本分享,本文是以前自己用的脚本,使用的Mysql数据库,需要的朋友可以参考下

#!/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 0;my $hostinfo;#while($hostname = $sth->fetchrow_hashref())#{# print “$hostname->{hostname} $hostname->{hostip}n”;#}#my @value;#while(@value = $sth->fetchrow_array())#{# print “@valuen”;#}#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 “0n” ;print “$hostinfo->{0} n” ;}#}#####MYSQL SELECT SUB START#####sub shencan {my @shencan = @_;foreach 0 (@shencan){my $sql = “select * from shencan.FC where hostname=‘$HOSTNAME‘”;my $myselect = $dbh->prepare($sql);$myselect->execute();while($hostinfo = $myselect->fetchrow_hashref()) {return “$hostinfo->{0}” ;}}}#####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 01 =shencan “type”;chomp(01);#####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}” $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: $CPISBINn”;print “$HOSTNAME NODE: $NODE OS: $os arch: $arch FC: $FC fdns: $fdns ng: $ngn”;#####CHECK OS START######sub OS {open (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,”){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,”){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 hversion=‘$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 01){}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 S=‘$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‘”;

上一篇:生态环境水利水电工程下一篇:安全思路