Perl или Python, которому лучше удовлетворяют для системной автоматизации Unix?

Вы, оказывается, не включили Outlook Нигде и не настроили Ваш клиент для использования прокси RPC/HTTPS?

Я вижу это поведение, когда я передаю активную роль почтового ящика другой машине в кластере CCR, но у меня действительно не было времени, чтобы придавить, если это - фактическая причина уже.

7
задан 9 March 2011 в 10:55
4 ответа

Короткий ответ: изучите обоих.

Вы собираетесь встретиться с обоими как с системным администратором, таким образом, Вы захотите знать, как считать/диагностировать/отладить обоих.

Что касается записи сценариев, я использовал главным образом Perl за прошлые 10 лет для большей части моей утилиты системного администратора и "склеиваю" сценарии. Его regex синтаксис действительно прост, и он предоставляет себя вполне хорошо чрезвычайно быстрой разработке сценариев. Это довольно важно, когда необходимо получить что-то работающее на месте.

В последнее время я прилагал усилие для использования большего количества Python по следующим причинам:

  • Требуется большая дисциплина для записи хорошего Perl. Слишком часто "быстрый n' грязный" сценарий имеет больше функций, в которые вползают со временем, и все же реализованных поспешным способом. В недалеком будущем у Вас есть обширный файл шума в линии, который является ЛАВАШЕМ для поддержания.

  • При записи OO (или даже допускающий повторное использование) код в Perl не легок по сравнению с Python. Верьте мне, в конечном счете Вы хотите много повторно используемого кода (и не вырезание и вклейка!)

  • Принципы Python (import this) намного лучше подходят для сотрудничества с другими по сравнению с принципом Perl TMTOWTDI. Если Вы когда-либо читали чужой Perl, можно знать, что это может быть о самой расстраивающей вещи распутать. Python страдает от этой проблемы неудобочитаемости намного менее из-за ее дизайна. Хуже даже, когда Вы встречаетесь со своим собственным Perl после многих лет. Вы зададитесь вопросом, в которой точке Вы, должно быть, потеряли сознание.

  • Документирование важно, если Ваш код будет вокруг некоторое время. Запись docstrings в Python намного легче, чем запись разметки переходной приставки в Perl. Достаточно легкий, что Вы могли бы на самом деле использовать его.

Я все еще использую Perl довольно много, но это теперь больше для острот и "одноразовых" сценариев, которые будут только работать однажды. Если я думаю, что когда-либо собираюсь отредактировать сценарий снова, я рассматриваю Python вместо этого.

9
ответ дан 2 December 2019 в 23:25

Это зависит от того, что Вы пытаетесь сделать, и где Вы пытаетесь сделать это. При прочих равных условиях, и то, где у Вас нет ограничений на Вашу среду, может установить то, что Вы хотите и не должны волновать по поводу взаимодействия с унаследованным кодом, не стесняйтесь выбирать язык, который удовлетворяет Вашим персональным предпочтениям лучше всего.

Тем не менее для работы системного администратора, я действительно думаю, что Perl имеет край: это установлено на всем из поля и было с тех пор примерно рассвет времени. Если Вы пишете системную автоматизацию или сценарий управления и используете только базовые модули Perl, можно быть почти положительны, что он будет работать без модификации везде в неоднородной среде UNIX и может быть расширен справедливо безболезненно на Windows с установкой Perl ActiveState или Земляники.

Надежда, которая помогает!

3
ответ дан 2 December 2019 в 23:25

Я рекомендовал бы Python. Я знаю жемчуг достаточно, но не эксперт, и мой опыт с Python был значительно выше. Я думаю, что это зависит от Ваших потребностей, но если бы просто для системной автоматизации я пошел бы путем Python и забыл бы о жемчуге (в настоящее время).

Вот отличный способ впитать Ваши зубы:

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
ответ дан 2 December 2019 в 23:25

Они эквивалентны; для домашней машины, которую Вы используете, зависит, на котором Вы чувствуете себя более комфортно в, но при работе с другими необходимо придерживаться любых установленных стандартов (если все остальные используют Python, Вы не должны использовать Perl без серьезного основания, и наоборот).

0
ответ дан 2 December 2019 в 23:25

Теги

Похожие вопросы