Назад | Перейти на главную страницу

Perl или Python, лучше подходят для автоматизации системы Unix?

Я использовал bash для большинства моих задач системного администрирования. Я тоже немного знаю Perl.

Я должен учиться Python или Perl лучше для автоматизации системы. До сих пор из моего опыта изучать Perl было легко.

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

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

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

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

  • Чтобы написать хороший Perl, требуется большая дисциплина. Слишком часто в сценарий «на скорую руку» добавляется больше функций, но они все же внедряются поспешно. Вскоре у вас будет обширный файл линейного шума, который необходимо поддерживать в формате PITA.

  • Написание объектно-ориентированного (или даже многоразового) кода на Perl непросто по сравнению с Python. Поверьте, в конечном итоге вам понадобится много многоразового кода (а не вырезания и вставки!)

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

  • Документирование важно, если ваш код прослужит какое-то время. Писать строки документации на Python намного проще, чем писать разметку подов на Perl. Достаточно просто, чтобы вы могли его использовать.

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

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

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

Надеюсь, это поможет!

Я бы порекомендовал питон. Я достаточно знаю 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 без уважительной причины, и наоборот) .