我一直在使用bash来处理大部分系统pipe理任务。 我也知道一点perl。
我应该学习Python还是Perl更适合系统自动化。 从我的经验来看,学习perl很简单。
简短的回答:学习两个。
你将遇到一个系统pipe理员,所以你会想知道如何阅读/疑难解答/debugging两者。
至于编写脚本,在过去的十年中,我大部分的系统pipe理员工具和“胶水”脚本都使用了Perl。 它的正则expression式语法非常简单,而且它非常适合极快的脚本开发。 当你不得不在现场工作时,这是非常重要的。
最近我一直在努力使用更多的Python,原因如下:
编写好的Perl需要很多纪律。 通常,“快速”“脏”脚本随着时间的推移具有更多的特征,但仍然以仓促的方式实施。 太久之前,你有一个庞大的线路噪声文件,这是PITA要维护的。
用Python编写OO(甚至是可重用的)代码并不容易。 相信我,从长远来看,你需要大量可重用的代码(而不是剪切和粘贴!)
与Perl的TMTOWTDI原则相比,Python的原理( import this )更适合与其他人协作。 如果你曾经读过别人的Perl,你可能知道它可能是解开最令人沮丧的事情。 Python由于其devise而遭受这种不可读性问题的困扰。 更糟糕的是,多年后遇到自己的Perl。 你会想知道你必须在哪一点停电。
如果您的代码将在一段时间内,logging是非常重要的。 用Python写文档比在Perl中编写pod标记容易得多。 很简单,你可能会使用它。
我仍然使用Perl很多,但现在更多的是单线程和“一次性”脚本,只能运行一次。 如果我觉得我会再次编辑脚本,我认为Python。
这取决于你想要做什么,以及你想要做什么。 所有的事情都是平等的,而且你的环境没有任何限制,可以随意安装,不必担心与旧代码的互操作,随意select最适合你的个人喜好的语言。
也就是说,对于系统pipe理员的工作,我认为Perl有一个优势:它被安装在一切开箱即用的东西上,并且从大致的时间开始。 如果您正在编写一个系统自动化或pipe理脚本,并且只使用核心Perl模块,那么几乎可以肯定的是,它将在您的异构UNIX环境中无处不在运行,并且可以通过安装ActiveState轻松扩展到Windows,或者草莓Perl。
希望有所帮助!
我会推荐python。 我知道Perl足够,但我不是专家,我的经验与python已经大大优于。 我认为这取决于你的需求,但如果仅仅是为了系统自动化,我会去python路线,忘记perl(暂时)。
这是一个很好的方式来下沉你的牙齿:
http://diveintopython.org/toc/index.html
像Fabric这样的东西在开发中可以让事情变得更简单:
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.
他们是相当的; 对于你使用的家用机器而言,取决于哪一个你感觉更舒适,但是当与其他人一起工作时,你应该坚持任何既定的标准(如果其他人使用Python,你就不应该使用Perl,反之亦然) 。