web-dev-qa-db-ja.com

PerlまたはPython、Unixシステムの自動化により適していますか?

私はほとんどのシステム管理タスクにbashを使用しています。 Perlについても少し知っています。

PythonまたはPerlは、システムの自動化に適しています。これまでのところ、Perlの学習は簡単でした。

7
nitins

短い答え:両方を学びましょう。

システム管理者として両方に遭遇するので、両方の読み取り/トラブルシューティング/デバッグの方法を知りたいでしょう。

スクリプトの作成に関しては、sysadminユーティリティーと「接着」スクリプトのほとんどに、過去10年間ほとんどPerlを使用してきました。その正規表現の構文は非常に単純で、非常に高速なスクリプト開発に非常に適しています。これは、何かをその場で機能させる必要がある場合に非常に重要です。

最近、私はより多くのPython=を使用するために以下の理由で努力しています:

  • 優れたPerlを作成するには、多くの規律が必要です。 「quick n 'dirty」スクリプトには、時間の経過とともに機能が追加されてしまうことがよくありますが、それでも、急いで実装されています。やがて、維持するPITAであるラインノイズのファイルが広がっています。

  • PerlでOO(または再利用可能)のコードを書くことは、Pythonに比べて簡単ではありません。長い目で見れば、多くの再利用可能なコードが必要です(カットアンドペーストではありません)。

  • Pythonの原則(import this)は、PerlのTMTOWTDIの原則と比較すると、他のユーザーとの共同作業に適しています。誰か他の人のPerlを読んだことがあるなら、解き明かすのに最も苛立たしいことについて知っているかもしれません。 Pythonは、その設計により、この読みやすさの問題の影響をはるかに受けません。さらに悪いことに、何年も経って自分のPerlに遭遇したときです。どの時点でブラックアウトする必要があるのか​​不思議に思うでしょう。

  • コードがしばらく使用される場合は、文書化することが重要です。 Pythonでのドキュメント文字列の記述は、Perlでのポッドマークアップの記述よりもはるかに簡単です。実際に使用するほど簡単です。

私はまだかなりの数のPerlを使用していますが、1回しか実行されないワンライナーおよび「使い捨て」スクリプト用になりました。もう一度スクリプトを編集するつもりなら、代わりにPythonを検討します。

9
Cakemox

それは、何をしようとしているか、どこでしようとしているのかによって異なります。すべてが同じで、環境に制限がなく、何でもインストールでき、レガシーコードとの相互運用を心配する必要がない場合は、個人の好みに最も適した言語を自由に選択してください。

とは言っても、sysadminの作業に関しては、PerlにはEdgeがあると思います。それは、箱から出してすべてにインストールされており、おおよその夜明け以降です。システム自動化または管理スクリプトを作成していて、コアPerlモジュールのみを使用している場合、異機種混在UNIX環境のどこでも変更なしで実行でき、ActiveStateまたはStrawberry Perl。

お役に立てば幸いです。

3
Jeff Albert

私はpythonをお勧めします。私はPerlを十分に知っていますが、専門家ではありません。pythonでの私の経験は非常に優れています。それはあなたのニーズに依存すると思いますが、システム自動化のためだけなら、pythonルーティングして、Perlを忘れてください(とりあえず)。

ここにあなたの歯を沈めるための素晴らしい方法があります:

http://diveintopython.org/toc/index.html

開発中のファブリックのようなもので、それは物事を本当に簡単にすることができます:

http://docs.fabfile.org/en/1.0.0/index.html

ページの例:

from fabric.api import run

def Host_type():
    run('uname -s')

出力

$ fab -H localhost,linuxbox Host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux

Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.
1
pablo

それらは同等です。ホームマシンの場合、どちらを使用するかは快適さによって異なりますが、他のユーザーと作業する場合は、確立された標準に従う必要があります(他のユーザーがPython正当な理由のないPerl、およびその逆)。

0
geekosaur