我应该使用Perl还是Python进行网络监控?

我应该使用Perl还是Python进行网络监控?,python,perl,networking,scripting-language,Python,Perl,Networking,Scripting Language,我想在网络方面做一些工作,在局域网上ping多台计算机并检索有关响应时间的数据。Perl和Python哪一种最有用、最高效?两者都可以正常工作。如果你对两者都没有经验,那就掷硬币吧。没有一种语言天生具有生产力;语言让人们变得更有生产力。不同的人从不同的语言中受益不同 但是,一般来说,当你知道你的具体任务并且需要选择一个工具时,寻找那些可以让你的生活变得轻松的库。对于Perl,请查看。您可能需要的每一个网络工具都有相应的模块 Python可能有非常相似的工具和库;我只是不知道它们是什么。我比Pyt

我想在网络方面做一些工作,在局域网上ping多台计算机并检索有关响应时间的数据。Perl和Python哪一种最有用、最高效?

两者都可以正常工作。如果你对两者都没有经验,那就掷硬币吧。没有一种语言天生具有生产力;语言让人们变得更有生产力。不同的人从不同的语言中受益不同

但是,一般来说,当你知道你的具体任务并且需要选择一个工具时,寻找那些可以让你的生活变得轻松的库。对于Perl,请查看。您可能需要的每一个网络工具都有相应的模块


Python可能有非常相似的工具和库;我只是不知道它们是什么。

我比Python更了解Perl,所以我的选择将落在Perl上。也就是说,我认为在低级任务上(比如在网络上ping计算机之类的)它们是相当等价的。Python可能有更好的面向对象支持,但对于脚本(这恰好是您所需要的)来说,Perl的威力是显而易见的。您在上找到的大量经过测试的模块(其中一些甚至是面向对象的)通常可以做您需要的一切,如果您适当地使用它们,它们甚至可以很好地扩展。

使用Perl


您将可以访问一个漂亮的Ping对象,并且将结果存储在数据库中非常容易。

我同意您使用哪种编程语言是非常主观的-本质上,我更希望尽可能快速高效地完成这项工作,使其可支持-因此这取决于您的基础设施

我能建议你自己看看而不是重新发明轮子吗


虽然Nagios在配置方面可能需要更大的学习曲线,但从长远来看是值得的,如果你找不到适合你需求的插件,那么编写自己的插件就很容易了。我想说的是,如果您需要在今天下午之前启动并运行一些快速而肮脏的东西,那么perl可能是更好的语言

然而,对于开发易于维护和扩展且可以长期构建的可靠应用程序,我会选择python


当然,这是假设你对两种语言的了解程度大致相同

无论你更了解或使用起来更舒服。他们都能做好这项工作,所以这是你的偏好

嗯,我同时使用Perl和Python,我的日常工作是支持网络监控软件。大部分要点已经讨论过了,但我将在这里综合/重申:

  • 不要重新发明轮子-有几十种网络监控解决方案可用于执行ping测试和分析收集的数据。例如,见

  • 如果您坚持自己做这件事,可以用Perl或Python来做——使用您最熟悉的方法。如果您计划解析大量文本,那么使用Perl比使用Python更容易做到“快速而肮脏”。两者都可以做到这一点,但Python需要一种OOP方法,而且它不如Perl的内联正则表达式语法那么简单

  • 使用库——在您之前,很多人已经完成了这项任务,所以请四处寻找合适的库,如Perl中的Net::Ping或Python或代码中的Net::Ping

  • 使用线程或异步ping-否则ping将花费很长时间,例如,请参阅使用线程同时运行ping。这在Python中使用这两种方法都特别容易,因此这是Python与IMO一起使用比使用Perl更容易的地方


  • 我不懂Python,所以我不能评论它提供了什么,我同意那些建议Nagios或其他现有系统的人的看法

    但是,如果您决定用Perl编写您自己的系统,请考虑使用。POE是一个协作多任务和网络框架


    坡有一条陡峭的学习曲线。但你的努力很快就会得到回报。POE将为建筑业提供坚实的基础。您需要的大部分内容已经在CPAN上提供。

    现在,我已经尝试了使用各种TAP库(主要是bash+netcat+curl和perl)为网络服务创建一些简单单元测试的方法。优点是您编写了一个脚本,可以用于单元测试和网络测试。
    通过TAP::HARNET::HTML显示dove。

    这是一个很好的建议。这是一个已解决的问题。使用纳吉奥斯或仙人掌。如果您有特殊要求,这两种工具都支持使用自定义脚本进行数据收集;在这种情况下,您可以使用python或perl.+1 Nagios。它可以很容易地进行定制,而且你也不会完全重新发明轮子。尽管它并不总是实用或是一个好主意,但没有什么比自己制作的学习经验更好的了。坐在我旁边的Paul说nmap()可能更适合你的需要。还有一个perl nmap解析器:perl也可以很容易地编程为可维护和可扩展的,并不是所有的perl代码都是行噪声。perl在这方面与C类似:是的,可以用任何一种语言编写令人难以置信的迟钝、难以理解和只编写一次的程序,但对于每种语言都有避免这些陷阱的指导方针。Perl有更多的特性,所以它也有更多的陷阱我知道编写易读、易于维护的Perl是可能的,我甚至遇到过一个真正能做到这一点的人(而且有太多人认为他们能做到)。我仍然认为perl的主要优势在于编写快速的程序,而且用python编写良好的可维护代码要容易得多。我已经用它取得了很好的效果。同意,Net::Ping非常优秀-它让您可以自由地按照预期进行标准ICMP Ping,还可以进行pin