У меня есть некоторый опыт работы с Баш, и я не возражаю, но теперь, когда я много занимаюсь разработкой Windows, мне нужно делать базовые вещи / писать базовые скрипты, используя язык командной строки Windows. По какой-то причине этот язык меня действительно раздражает, поэтому я подумывал об изучении Python и его использовании.
Подходит ли Python для таких вещей? Перемещение файлов, создание сценариев для таких вещей, как распаковка резервной копии, восстановление базы данных SQL и т. д.
См. stackoverflow.com/questions/209470/…. Ответ для Windows такой же, как и для bash.






Python хорошо подходит для этих задач, и я думаю, что его гораздо проще разрабатывать и отлаживать, чем пакетные файлы Windows.
Я думаю, вопрос в том, насколько легко и безболезненно убедиться, что на всех компьютерах, на которых вы должны запускать эти сценарии, был установлен Python.
довольно легко преобразовать python в .exe. В Windows также есть хорошие ссылки на службы COM и Windows.
Вы знаете о PowerShell?
Powershell (а также cmd и bash) ужасны по сравнению с красотой python. Да я фанатик :)
Конечно, python - довольно хороший выбор для этих задач (я уверен, что многие вместо этого порекомендуют PowerShell).
Вот хорошее введение с этой точки зрения:
http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-well-kept-secret/
Обновлено: О проблеме gnud: http://www.portablepython.com/
URL-адрес redhatmagazine.com больше не существует. Archive.org захватил страницу: web.archive.org/web/20080517104907/http://…
Python, безусловно, хорошо подходит для этого. Если вы идете по этому пути, вы также можете исследовать SCons, который является самой системой сборки, построенной на Python. Круто то, что сценарии сборки на самом деле сами по себе являются полноценными сценариями Python, поэтому вы можете делать в сценарии сборки все, что в противном случае могли бы делать на Python. По сравнению с этим make выглядит довольно анемичным.
Перечитывая ваш вопрос, я должен отметить, что SCons больше подходит для создания программных проектов, чем для написания сценариев обслуживания системы. Но в любом случае я без колебаний порекомендую вам Python.
Что угодно - хорошая замена пакетной файловой системе в Windows. Perl, Python, Powershell - хороший выбор.
@BKB определенно вызывает серьезную озабоченность. Вот пара ссылок, которые вы захотите проверить, если у вас возникнут проблемы, которые не могут быть решены с помощью стандартной библиотеки:
В последнее время я много использую Файлы сценариев Windows. Более мощный, чем пакетные сценарии, и поскольку он использует сценарии Windows, устанавливать нечего.
Python вместе с Pywin32 подойдет для автоматизации Windows. Однако VBScript или JScript, используемые с Winows Scripting Host, работают так же хорошо и не требуют установки дополнительных компонентов.
Как бы я ни любил python, я не думаю, что это хороший выбор для замены базовых пакетных сценариев Windows.
Я не вижу, чтобы кому-то приходилось импортировать модули, такие как sys, os или getopt, для выполнения основных действий, которые вы можете делать с помощью оболочки, например, вызова программы, проверки переменной среды или аргумента.
Кроме того, по моему опыту, большинство системных администраторов понимают goto гораздо проще, чем вызов функции.
Я считаю, что явное использование os.this и sys.that является преимуществом Python. Трудно уловить случайный набор функций оболочки. Библиотеки Python упрощают понимание.
В этом я должен согласиться с С. Лоттом. Это не так уж и много лишней работы, а ясность не позволяет загромождать глобальное пространство имен.
Я написал приличное количество сценариев как в среде Linux / Unix, так и в среде Windows, в Python, Perl, пакетных файлах, Bash и т. д. Мой совет: если это возможно, установите Cygwin и используйте Bash (из вашего описания это звучит как установка языка сценариев или env не проблема?). Вам будет удобнее с этим, поскольку переход минимален.
Если это не вариант, то вот мой вариант. Пакетные файлы очень сложны и ограничены, но имеют большой смысл для простых задач, таких как «копирование некоторых файлов» или «перезапуск этой службы». Python будет чище, проще в обслуживании и намного мощнее. Однако обратная сторона заключается в том, что вы либо в конечном итоге вызываете внешние приложения из Python с помощью подпроцесса, popen или аналогичного. В противном случае вы в конечном итоге напишете кучу большего количества кода для выполнения сравнительно простых вещей в пакетных файлах, таких как копирование папки, полной файлов. Во многом это зависит от того, что делают ваши скрипты. Например, обработка текста / строк в Python будет намного чище.
Наконец, это, вероятно, не очень привлекательная альтернатива, но вы также можете рассмотреть VBScript в качестве альтернативы. Мне лично не нравится работать с ним как с языком, но если переносимость вызывает какую-либо озабоченность, тогда он выигрывает благодаря тому, что он доступен из коробки в любой копии Windows. Из-за этого я обнаружил, что вместо этого пишу сценарии, которые были громоздкими в виде пакетных файлов на VBScript, поскольку обычно я не могу полагаться на Python, Perl или Bash, доступные в Windows.
«копирование папки с файлами» - может помочь стандартный модуль shutil.
Окна: не надо думать, используйте Python. Unix: быстрые скрипты или скрипты для однократного выполнения предназначены для Bash, серьезные скрипты и / или скрипты с длительным сроком службы - для Python.
В среде Windows Python определенно является лучшим выбором, поскольку cmd - дрянной, а PowerShell еще не освоился. Более того, Python может работать на нескольких платформах, так что это более выгодное вложение. Наконец, Python имеет огромный набор библиотек, так что вы почти никогда не столкнетесь со стеной «бог-я-не могу-этого». Это не относится к cmd и PowerShell.
В среде Linux это немного иначе. Многие однострочники короче, быстрее, эффективнее и часто более читабельны в чистом Bash. Но если вы знаете, что ваш быстрый и грязный скрипт останется на какое-то время или его нужно будет улучшить, выбирайте Python, поскольку его намного проще поддерживать и расширять, и вы сможете выполнять большую часть задач, которые вы можете сделать с помощью инструментов GNU со стандартной библиотекой. И если вы не можете, вы все равно можете вызвать командную строку из скрипта Python.
И, конечно же, вы можете вызвать Python из оболочки, используя параметр -c:
python -c "for line in open('/etc/fstab') : print line"
Еще немного литературы о Python, используемом для задач системного администрирования:
В качестве продолжения, после некоторых экспериментов я нашел Python наиболее полезным для любой ситуации, связанной с манипуляциями с текстом (yourStringHere.replace (), регулярными выражениями для более сложных вещей) или очень быстрым тестированием какой-либо базовой концепции, что отлично подходит для .
Я считаю, что для таких вещей, как сценарии восстановления базы данных SQL, я обычно просто прибегаю к пакетным файлам, поскольку обычно это либо достаточно короткое, что на самом деле требуется больше кода Python для выполнения соответствующих системных вызовов, либо я могу повторно использовать фрагменты кода от других людей, уменьшая времени написания достаточно, чтобы настроить существующий код в соответствии с моими потребностями.
В качестве дополнения я настоятельно рекомендую IPython как отличную интерактивную оболочку с автозавершением по табуляции и легким доступом к документации.
Да! Я недавно обратился. Раньше я писал тонны файлов bat Windows (плюс с NAnt) для выполнения этих задач, а затем переключился на Python, и я не мог поверить, насколько это было проще и продуктивнее.