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

Запутался в делах системного администратора с Python или нет

Я делал резервные копии в bash, а также написал несколько других сценариев bash. Я хотел перейти на Python, потому что мне нужно было изучить Python для методов ИИ, и я всегда откладывал это. Поскольку мне очень часто приходится заниматься системным администрированием, я подумал, что если я буду делать что-то на python, то на python это будет хорошо. Теперь меня мало что смущает

1) Я видел, что могу делать что-то в одной строке в bash, но в python мне нужно написать 15 строк кода для этого .e, g создания резервных копий tar-шара. sed, awk может фильтровать файлы в строке, тогда как в python мне нужно написать намного больше строк. Итак, мои вопросы: я ошибаюсь. Действительно ли python используется для системного администратора или нет. Для меня это похоже на создание 5-страничного статического веб-сайта в J2EE, а не в виде простого html.

2) Я хочу знать, почему человек должен выбирать python, если bash может все. Я говорю только о системных администраторах.

Так что мне нужно знать, не слишком ли я убил себя, пытаясь использовать python, или это просто потому, что я все еще учусь, мне это сложно?

Я просто хочу знать, действительно ли Python предназначен для таких вещей, как резервное копирование, проверка файлов журналов и т. Д.

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

Это тот же вопрос, с которым системные администраторы Windows сталкивались при работе с пакетной записью или VBScript. PowerShell помогает немного облегчить это, но вы все еще сталкиваетесь с вопросом: «Достаточно ли сложна эта задача, чтобы требовать PowerShell, или достаточно хорош пакетный сценарий, чтобы надежно выполнить работу?».

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

Когда я пишу сценарий, у меня есть мысленный список:

  1. Какую именно задачу я пытаюсь выполнить? Шаг первый всегда определить проблему.
  2. На каком языке мне быстрее написать этот скрипт? Мое время ценно.
  3. На каком языке кому-то лучше читать, понимать и поддерживать эту задачу? Ценно и время других людей.
  4. Какой язык приведет к более надежному, надежному или более долгосрочному исправлению? Я хочу написать это один раз и исправить навсегда.
  5. Есть ли что-нибудь, что делает язык неприемлемым? Будет ли Python или PowerShell недоступен, или не будут установлены определенные модули? Будет ли мой командный файл или сценарий bash вызывать программы, наличие которых не гарантируется и которые я не могу поддерживать с помощью сценария?

Вы задаете здесь несколько риторический вопрос. Это все равно, что спрашивать, зачем кому-то иметь разные наборы розеток в ящике для инструментов, если подойдет один набор розеток. Каждый инструмент (в данном случае программа / язык / среда сценариев) имеет свои уникальные сильные и слабые стороны. Например, зачем вам использовать Puppet (написанный на Ruby), когда CFEngine (написанный на C, я полагаю) делает то же самое?

Одно из самых больших преимуществ языка сценариев по сравнению с оболочкой - удобочитаемость (не считая запутанного Perl). Это также может быть намного проще при манипулировании языковой строкой. В Bash, например, вам может потребоваться повторить вашу строку в sed / awk / grep для ее анализа, но в Python / Ruby / Perl у вас есть встроенные регулярные выражения и манипуляции со строками. Кроме того, связь с удаленными сокетами может быть проще, чем писать сценарий вокруг curl, wget или netcat. Кроме того, языки сценариев не нуждаются в форке для обработки. Пример:

myvar=$(echo "my string" | grep string | cut -d"" -f 3)

Это приведет к созданию трех отдельных вилок, которые, в свою очередь, замедлят работу системы.

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

Я системный администратор и программист на Python. Что я обычно делаю, так это заранее обдумываю и взвешиваю то, что мне нужно будет сделать, чтобы чего-то достичь в bash и на python, а затем использовать лучший инструмент для работы (тот, который дает мне больше скорости / мощности). Одно не исключает другого, взгляните на питон модуль ОС и вы увидите, что там есть много вещей, которые могут помочь в системном администрировании.

Как правило (которое я использую, YMMV): если вам придется запускать много команд, вам будет лучше с bash, а если вам придется выполнять форматирование и вычисления из текстовых файлов, лучше будет python.

Кроме того, вы говорите, что изучаете python, поэтому я предлагаю вам в первую очередь придерживаться того, что вы знаете лучше всего. Запустите несколько тестовых проектов, чтобы ближе познакомиться с python, и когда вы станете лучше, вы увидите, что, естественно, вы будете делать что-то на bash или python в зависимости от сложности того, что вы хотите сделать.

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

На самом деле решать вам как программисту. Не исключайте один метод, если не знаете как - если вы можете извлечь уроки из опыта, почему бы и нет?