3

我想在网络前端完成一些工作,ping 局域网上的许多计算机并检索有关响应时间的数据。使用哪个最有用和最有效率:Perl 还是 Python?

4

9 回答 9

22

我同意您使用哪种编程语言是非常主观的 - 基本上我宁愿尽可能快速有效地完成工作,使其可支持 - 所以这取决于您的基础架构......

我可以建议你看看Nagios而不是自己重新发明轮子吗?

虽然 Nagios 在配置方面可能需要更大的学习曲线,但从长远来看这是值得的,如果您找不到适合您要求的插件,那么编写自己的插件很容易。Joel Spolsky就此写了一篇有趣的文章。

于 2009-01-29T12:44:42.147 回答
14

好吧,我同时使用 Perl 和 Python,我的日常工作是支持网络监控软件。大多数导入点已经涵盖,但我将在这里巩固/重申:

  1. 不要重新发明轮子 - 您可以使用数十种网络监控解决方案来执行 ping 测试和分析收集的数据。参见例如

  2. 如果你坚持自己做,这可以在 Perl 或 Python 中完成——使用你最了解的那个。如果您打算解析大量文本,那么在 Perl 中执行此“快速而肮脏”的操作会比在 Python 中更容易。两者都可以,但 Python 需要 OOP 方法,而且它不像 Perl 的内联正则表达式语法那么简单。

  3. 使用库——很多很多人在你之前已经完成了这项任务,所以四处寻找合适的库,比如 Perl 中的 Net::Ping 或 Python 中的icmplib这个 ping.py代码。

  4. 使用线程或异步 ping - 否则 ping 将永远持续,例如查看这个使用线程同时运行 ping 的配方。这在 Python 中使用任何一种方法都特别容易做到,因此这是 Python 与 IMO 一起使用比使用 Perl 更容易的地方。

于 2009-01-29T18:16:14.050 回答
12

使用 Perl。

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

于 2009-01-29T12:29:37.247 回答
7

任何一个都应该工作得很好。如果您没有任何经验,请掷硬币。没有一种语言天生就具有生产力。语言让人们变得富有成效。不同的人会从不同的语言中获得不同的好处。

不过,一般来说,当您知道自己的特定任务并需要选择工具时,请寻找可以让您的生活更轻松的库。对于 Perl,请查看综合 Perl 存档网络。您可能需要的每个网络事物都有模块。

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

于 2009-01-29T12:27:35.660 回答
3

我比 Python 更了解 Perl,所以我会选择 Perl。也就是说,我认为在低级任务(例如在网络上 ping 计算机等)它们是相当等价的。Python 可能有更好的面向对象的支持,但是对于脚本(这恰好是你需要的),Perl 的力量是非常明显的。您在CPAN上找到的大量测试模块(其中一些甚至是面向对象的)通常可以满足您的所有需求,如果您适当地使用它们,它们甚至可以很好地扩展。

于 2009-01-29T12:28:09.450 回答
2

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

但是,如果您决定使用 Perl 推出自己的系统,请考虑使用POE。POE 是一种协作式多任务处理和网络框架。

POE 有一个陡峭的学习曲线。但是你的付出很快就会得到回报。POE 将为构建提供坚实的基础。您需要的大部分客户端代码已经在 CPAN 上可用。

于 2009-01-30T23:07:12.480 回答
1

无论您更了解或更舒适地使用哪个。他们都可以完成这项工作并且做得很好,所以这是您的偏好。

于 2009-01-29T18:01:17.810 回答
1

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

于 2010-11-25T09:47:35.723 回答
-1

我会说,如果您需要一些快速而肮脏的东西,并且在今天下午之前可以启动并运行,那么 perl 可能是更好的语言。

但是,对于开发易于维护和扩展并且可以随着时间的推移构建的可靠应用程序,我会使用 python。

这当然是假设您或多或少地了解两种语言。

于 2009-01-29T13:41:07.943 回答