LAN 上の多数のコンピューターに ping を実行し、応答時間に関するデータを取得するなど、ネットワークの最前線でいくつかの作業を行いたいと考えています。Perl と Python のどちらを使用するのが最も便利で生産的でしょうか?
9 に答える
どのプログラミング言語を使用するかはかなり主観的なものであることに同意します-基本的に、サポート可能なものにするために、できるだけ迅速かつ効率的に仕事を終わらせたいと思います-それはあなたのインフラストラクチャに依存します...
自分で車輪を再発明するのではなく、Nagiosを検討することを提案できますか?
Nagios は構成に関してより多くの学習曲線を必要とするかもしれませんが、長い目で見ればそれだけの価値があります。要件に合ったプラグインが見つからない場合は、独自のプラグインを簡単に作成できます。Joel Spolskyは、これについて興味深い記事を書いています。
ええと、私はPerlとPythonの両方で働いており、私の日常の仕事はネットワーク監視ソフトウェアをサポートすることです。ほとんどのインポートポイントはすでにカバーされていますが、ここで統合/繰り返します。
車輪の再発明をしないでください。pingテストの実行と収集されたデータの分析に使用できるネットワーク監視ソリューションは数十あります。たとえば、
これを自分で行うことを主張する場合、これはPerlまたはPythonのいずれかで行うことができます-あなたが最もよく知っているものを使用してください。大量のテキストを解析することを計画している場合は、PythonよりもPerlでこの「迅速で汚い」ことを行う方が簡単です。どちらもそれを行うことができますが、PythonにはOOPアプローチが必要であり、Perlのインライン正規表現構文ほど簡単ではありません。
ライブラリを使用する-多くの人がこのタスクを実行してからであるため、PerlのNet :: Ping、Pythonのicmplib 、またはこのping.pyコードなどの適切なライブラリを探してください。
スレッドまたは非同期pingを使用します。そうしないと、pingに永遠に時間がかかります。たとえば、スレッドを使用してpingを同時に実行するこのレシピを参照してください。これは、どちらのアプローチを使用してもPythonで特に簡単に実行できるため、Perlを使用するよりもPythonでIMOを使用する方が簡単な場所の1つです。
Perl を使用します。
素晴らしい Ping オブジェクトであるNet::Pingにアクセスでき、結果をデータベースに保存するのは非常に簡単です。
どちらでも問題なく動作するはずです。どちらも経験がない場合は、コインを投げてください。本質的に生産的な言語はありません。言語によって人々は生産的になることができます。言語が異なれば、人によってメリットも異なります。
ただし、一般的に、特定のタスクを知っていて、ツールを選択する必要がある場合は、作業を楽にしてくれるライブラリを探してください。Perl については、 Comprehensive Perl Archive Networkを確認してください。必要なすべてのネットワーキングに対応するモジュールがあります。
Python にはおそらく非常によく似たツールとライブラリがあります。私は彼らが何であるかを知りません。
私は Python よりも Perl をよく知っているので、Perl を選択することにしました。とはいえ、低レベルのタスク (ネットワーク上のコンピューターに ping を実行するなど) では、それらはかなり同等であると私は主張します。Python はより優れたオブジェクト指向のサポートを備えているかもしれませんが、スクリプト作成 (たまたまそれが必要な場合) に関しては、Perl の能力は非常に明白です。CPANにあるテスト済みモジュール (オブジェクト指向のものもあります) の大規模なプールは、通常、必要なすべてのことを実行でき、適切に使用すれば適切に拡張することさえできます。
私は Python を知らないので、それが提供するものについてコメントすることはできません。また、Nagios や他の既存のシステムを提案する人々に同意します。
ただし、Perl を使用して独自のシステムを展開する場合は、POEの使用を検討してください。POE は、協調的なマルチタスクおよびネットワーキング フレームワークです。
POE の学習曲線は急勾配です。しかし、あなたの努力はすぐに報われます。POE は、構築するための強固な基盤を提供します。必要なクライアント コードの多くは、 CPAN で既に利用可能です。
あなたがよく知っているか、より快適に使用できる方。彼らは両方とも仕事をすることができ、それをうまくやることができるので、それはあなたの好みです.
現在、さまざまな TAP ライブラリ (主に bash+netcat+curl および perl) を使用して、ネットワーク サービスの簡単な単体テストを作成するアプローチを試しています。利点は、単体テストとネットワーク テストの両方に使用できる 1 つのスクリプトを記述できることです。表示は、TAP::Harness::HTML を介して行われます。
もしあなたが、今日の午後までに稼働するような手っ取り早くて汚いものが必要なら、おそらく perl の方が良い言語だと思います。
ただし、保守と拡張が容易で、時間をかけて構築できる堅牢なアプリケーションを開発するには、Python を使用します。
もちろん、これは両方の言語を多かれ少なかれ同じくらいよく知っていることを前提としています。