先说下当时的需求,而且思路:
1.需求:需要扫描多个IP,把扫描结果保存到XML下。将XML下数据进行过滤,取出需要的数据打印出来。
2.目前难点:根据场景的不同,扫描出来的结果差异无比的大,例如每次结果都有差距。偶尔会冒出一些不懂的字段。为此很伤脑筋。
3.自己写出来的Perl代码:自己写的代码有点烂,可能学得不太好。Perl能够读取XML的节点,但是一旦扫多个IP,节点就会有变化。

当时使用的模块有很多问题,对此无比的尴尬。一开始摸索的模块是这个:XML::Simple 这是一个XML专门的处理模块。
贴上刚开始写的代码:

    #!/usr/bin/perluse XML::Simple;use Data::Dumper;my $simple=XML::Simple->new();my $data=$simple->XMLin('wai.xml');#print Dumper($data)."\n";print "-----------------------------------------------------\n";print "创建时间:".$data->{startstr}."\n";print "Ip地址:".$data->{host}->{address}[0]->{addr}."\n";print "mac地址:".$data->{host}->{address}[1]->{addr}."\n";print "主机名称:null\n";print "主机状态:".$data->{host}->{status}->{state}."\n";print "操作系统名称:".$data->{host}->{os}->{osclass}->{osfamily}."\n";print "操作系统版本:".$data->{host}->{os}->{osclass}->{osgen}."\n";print "操作系统补丁:".$data->{host}->{os}->{osmatch}->{name}."\n";print "操作系统语言:null\n";print "表更新时间:".$data->{runstats}->{finished}->{timestr}."\n";print "服务总数量:".$data->{taskend}[3]->{extrainfo}."\n";

这就刚开始写的代码,比较纠结的问题来了,当扫描单个IP的时候,输出完全正常,但是在扫描多个节点的IP的时候,
根据场景的不同,输出结果就有很大的区别,对此甚是无奈,所以只能google搜索下解决的思路。
在后续找到一个脚本跟我的需求基本差不多,但是他使用的是sqlite3的数据库,而我目前准备使用的是mysql的数据库,
所以嘛,我得修改下。具体的代码请看上一篇文章,我做了个MARK。
接着我分析了下这个脚本使用的模块说明,无比蛋疼。。。没办法,英语不太好,所以我就google一个个单词翻译.
在此忽略了1晚上时间。。。具体说明文档在 http://search.cpan.org/~apersaud/Nmap-Parser-1.3/Parser.pm
感兴趣的童鞋可以自己移步去研究下。当然,我在这只是大概说下自己的分析思路。
接着放出最终解决问题的脚本(具体插库的那部分我删除了,你可以自己加),欢迎讨论和学习。。:)

    use Nmap::Parser;use DBI;use Config::IniFiles;main:{if ($#ARGV == -1){                    usage();exit(1);}my $xmlfile=$ARGV[0];nmap_info($xmlfile);}sub usage{print "--------------------\n";print "Usage: perl nmap.xml\n";print "--------------------\n";exit;}sub nmap_info{local($file_name)=shift;my $np=new Nmap::Parser;$np->parsefile("$file_name");my $session=$np->get_session();for my $host ($np->all_hosts()){if($host->addr eq undef){$host_addr='null';}else{$host_addr=$host->addr;}if($host->status eq undef){$host_status='null';}elsif($host->status eq 'down'){$host_status=1;}elsif($host->status eq 'up'){$host_status=0;}if($host->hostname eq undef){$host_hostname='null';}else{$host_hostname=$host->hostname;}if($host->mac_addr eq undef){$host_mac_addr='null';}else{$host_mac_addr=$host->mac_addr();}if($host->tcp_port_count eq undef){$tcp_port_count='null';}else{$tcp_port_count=$host->tcp_port_count;}if($host->os_sig->osfamily eq undef){$osfamily='null';}else{$osfamily=$host->os_sig->osfamily;}if($host->os_sig->osgen eq undef){$osgen='null';}else{$osgen=$host->os_sig->osgen;}if($host->os_sig->name eq undef){$os_name='null';}else{$os_name=$host->os_sig->name;}print "IP:",$host_addr,"\n";print "状态:",$host_status,"\n";print "主机名:",$host_hostname,"\n";print "开始时间:",$session->start_str(),"\n";print "结束时间:",$session->time_str(),"\n";print "Mac地址:",$host_mac_addr,"\n";print "服务数量:",$tcp_port_count,"\n";print "系统名称:",$osfamily,"\n";print "系统版本:",$osgen,"\n";print "系统补丁版本:",$os_name,"\n";}}

转载于:https://www.cnblogs.com/xiaoCon/archive/2013/03/17/2964409.html

Perl Nmap报告处理摸索(学习)相关推荐

  1. c语言入门报告,c语言学习心得报告

    c语言学习心得报告 C 语言学习心得报告 看了一段时间的<C和指针> ,这样看的效果不是很好,看着书本当时是懂 了,有点恍然大悟的感觉,但是发现并不能真正的把理解的内容加入到自己程 序当中 ...

  2. 学计算机专业英语报告范文,计算机学习报告

    计算机学习报告怎么写?本频道是免费计算机学习报告网站,为您整理了海量优秀的计算机学习报告相关论文范文和参考文献!对您的毕业论文与职称论文写作有着参考价值,涵盖大学计算机学习报告范文和格式模板以及相关的 ...

  3. 【NeurIPS2019】Yoshua Bengio报告:深度学习系统从1代到2代

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 报告地址: https://nips.cc/Conferences/2019/Sche ...

  4. 麦肯锡AI应用报告:深度学习是蓝海还是深坑?

    来源:网络大数据 AI的价值并不在模型自身,而在于公司怎样用好它们. 麦肯锡出品,一份深度学习领域的分析报告,包含400个应用案例,横跨19个行业的9种业务功能.报告重点强调了前沿AI技术的应用范围之 ...

  5. 2018人工智能前沿报告:深度学习的应用和价值

    来源: 199IT互联网数据中心 摘要:报告重点强调了前沿AI技术的应用范围之广,以及经济潜力之盛,也提到了发展中的一些局限和挑战. 报告包含400个应用案例,横跨19个行业的9种业务功能.报告重点强 ...

  6. Perl/CGI脚本语言编程学习资料及开发工具下载大全

    Practical Extraction and Report Language Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表.Perl借取了C.sed. ...

  7. 计算机图形学学习报告,计算机图形学学习报告.pdf

    精选公文范文 计算机图形学学习 报告 篇一:计算机图形学学习心得体会 计算机图形学学习心得体会 计算机科学与技术与技术 班 学号: 1.计算机图形学 计算机图形学(Computer Graphics, ...

  8. 计算机图形学学习报告,计算机图形学学习报告.doc

    计算机图形学学习报告 篇一:计算机图形学学习心得体会 计算机图形学学习心得体会 计算机科学与技术与技术 班 学号: 1.计算机图形学 计算机图形学(Computer Graphics,简称CG),狭义 ...

  9. 计算机控制实验报告组态软件学习,中北大学组态软件实验报告

    中北大学组态软件实验报告 (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 中北大学组态软件图灵开物实验报告目录1绪论 2实验一 ...

最新文章

  1. static 用法www
  2. 1114 Family Property (25 分)【难度: 中/ 知识点: 并查集】
  3. redis的关键路径和lazy-free
  4. 据说有99%的人都会做错的面试题
  5. Facebook如何“养号”干货分享
  6. SQL的3种连接查询
  7. 在Microsoft Workflow Foundation中晃荡了两天
  8. asp毕业设计—— 基于asp+access的网上动态同学录系统设计与实现(毕业论文+程序源码)——同学录系统
  9. 问题解决型QCC课题的推行步骤
  10. 教你用300行Python代码实现一个人脸识别系统
  11. Idea社区版部署项目到tomcat
  12. Windows打开热点断网解决方法
  13. icem密度盒怎么设置_ICEM学习笔记
  14. h5的第一天 做的自定义调色器
  15. 20172327 2017-2018-2 《程序设计与数据结构》第十一周学习总结
  16. Mysql统计分组后每组数据与每组数量区别
  17. 如何构建用户画像,给用户打“标签”?
  18. 驱动人生给出关于代码19导致驱动安装失败的解决方案
  19. 与西安协同销售总监赵建春先生避风塘聊天记
  20. edge浏览器安装无法连接Internet

热门文章

  1. 在VS2010中使用wxWidgets 2.9.3
  2. Android程序员一年工作经验能重复用十年?高效学习很重要!
  3. 网络协议必会知识点:互联网网络分层
  4. Unity3D基础API之Vector3
  5. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
  6. OSPF路由聚合实验(详细)
  7. 分布式程序的自动化回归测试
  8. 轮滑---1、动作和杂记
  9. legend3---lavarel中使用qq邮箱发送邮件
  10. 简单的ALV显示例子