Как автоматизировать простые задачи с помощью скриптов?
Рассказываем, какие скрипты нужны, чтобы автоматизировать задачи, и какие у них есть возможности.
254 открытий2К показов
В ежедневной работе каждого программиста очень много рутинных задач, которые отнимают время. А это время можно было бы использовать для решения более интересных и/или важных задач: написание или доработка кода, разработка проектной спецификации или проведение ревью. Чтобы не тратить много времени на решение типовых задач, на помощь приходят скрипты — они автоматизируют выполнение регулярных однотипных тасков.
К тому же скрипты не просто экономят время, а снижают вероятность ошибок. Они могут помочь в регулярном копировании файлов, сборе данных или бэкапах системы по «расписанию». В общем, полезны они будут и новичкам, и опытным айтишникам.
В этой статье рассмотрим, какой язык выбрать для написания скриптов, приведём примеры простых скриптов автоматизации и сформируем список шагов для создания эффективных скриптов.
Выбор языка для написания скриптов
Выбор подходящего языка для скриптов зависит от конкретных задач, среды, в которой работает программист, и уровня его навыков. Ниже рассмотрим 3 основных языка программирования для написания скриптов.
Обзор популярных языков
Bash
Стандартный интерпретатор командной строки в UNIX-системах. Bash хорош для автоматизации задач на уровне операционной системы: управление файлами, автовыполнение заданий через cron и так далее. Bash особенно подойдёт системным администраторам и всем, кто пользуется Linux или UNIX.
Python
Один из самых универсальных языков. Python хорош своей простотой и большим количеством библиотек. Подойдёт как начинающим, так и тем, кто уже давно занимается обработкой данных или веб-скрейпингом. Python поддерживается практически всеми платформами и может решать более сложные и объёмные задачи с помощью большого количества расширений.
PowerShell
Очень известный продукт Microsoft, который хорош для SCM и автоматизации системных задач на базе Windows. У PowerShell есть один сильный плюс — интеграция со всеми возможными сервисами Microsoft (в частности и с Active Directory). Подойдёт для корпоративных проектов на винде.
Рекомендации для начинающих
Если вы только задумались о том, как автоматизировать с помощью скриптов рутину, или только начинаете погружаться в эту тему, у нас есть 5 главных советов:
- Выберите простую задачу или сценарий, который вы регулярно выполняете вручную. Это может быть отправка писем, занесение задач в трекеры, проверка кода и конфигураций — в общем, что угодно.
- Изучите основы языка, который вы выбрали для написания скриптов, чтобы лучше понять, какие есть дополнительные функции для автоматизации системных задач;
- Практика — лучший способ освоения программирования, так что не бойтесь экспериментировать с кодом (главное всегда делайте бэкап :).
- Почитайте форумы разработчиков — там вы не только сможете найти ответы на вопросы, но и почитать об опыте других программистов. Может быть, найдёте новое интересное решение?
- Всегда пишите комментарии к коду — так вы лучше будете его понимать сами, а потом сможете поделиться и кодом, и комментами с другими разработчиками, которые могут предложить, например, сократить код за счёт более простой команды.
Простые примеры автоматизации
Копирование и организация файлов с помощью Bash
Как мы уже говорили, Bash часто выбирают для написания скриптов в Unix или Linux.
Пример: у вас есть папка с разными типами файлов. Вам нужно рассортировать их в другие директории по типам.
Скрипт для автоматизации:
Шаг первый — запускаем Bash:
#!/bin/bash
Шаг второй — создаём директории для каждого типа файлов:
mkdir -p Documents Images Videos Others
Шаг третий — перемещаем файлы:
Такой скрипт проверяет MIME-тип каждого файла и перемещает его в нужную папку. При этом вручную делать ничего не нужно — просто запустить скрипт.
Автоматизация сбора данных из интернета с помощью Python
Пример: допустим, вам нужно регулярно получать последние статьи с сайта.
Скрипт для автоматизации:
Шаг первый — запускаем библиотеку BeautifulSoup:
Шаг второй — указываем нужный URL и пишем запрос:
Шаг третий — парсим статьи со страницы:
Такой скрипт отправляет GET-запрос на сайт и извлекает заголовки и краткие описания статей. А значит, с помощью этого скрипта вы сможете получить информацию о последних статьях (в формате заголовка и краткого описания) с любого сайта.
Настройка регулярных задач через cron или Task Scheduler
Скрипты созданы, всё работает правильно? Значит, можно переходить к автоматизации скриптов через планировщиков задач. В Unix-системах это можно сделать через cron, а на Windows — через Task Scheduler.
Пример настройки cron:
Откройте файл crontab командой crontab -e и добавьте строку:
0 6 * * * /path/to/your/script.sh
Так скрипт будет выполняться каждое утро в 6 утра.
Пример настройки Task Scheduler:
- Откройте Планировщик заданий;
- Выберите «Создать задачу»;
- Установите триггер выполнения задачи — «по расписанию»;
- Укажите программу или сценарий для выполнения (например, путь к Python-скрипту).
С помощью настройки планировщиков вы можете автоматизировать любую задачу. Получать последние статьи с Tproger каждый понедельник в 9 утра? Без проблем. Проверять конфигурации системы каждый день после внесения любых изменений в код? Да пожалуйста! Во всём поможет классный правильно написанный скрипт.
Ключевые шаги при написании скриптов
Самый важный шаг при написании любого скрипта — глубокое понимание задачи, которую вы хотите автоматизировать. Если этого понимания не будет, есть высокий риск создать не очень эффективное или неправильное решение.
Что здесь важно:
- Определить конечную цель автоматизации;
- Собрать все необходимые данные;
- Понять, какие процессы или шаги должны быть выполнены.
Например, если вы хотите автоматизировать еженедельную отчётность через скрипты, вам нужно определить источники данных, формат готовых данных и частоту выполнения скрипта.
Следующий шаг — разработка алгоритма, пошагового плана действий для регулярного корректного выполнения скрипта. Здесь очень важно разбить задачу на более мелкие и лёгкие части: сначала вы добавляете ресурс, с которого будут «подтягиваться» статьи; далее выбираете, что именно будет приходить вам в качестве готового результата (тайтлы и саммари статей); далее указываете, в каком виде вы должны получить результат.
Подготовка алгоритма — это:
- Точное указание вводных данных;
- Разработка логики скрипта;
- Указание порядка действий внутри скрипта.
Попробуйте создать блок-схему для наглядности, если вы столкнулись с непростой задачей для автоматизации. Подробно распишите, какие вводные должны учитываться, в каком формате, нужно ли их преобразовывать, что с ними делать и в каком формате выводить информацию. Так вы лучше сможете понять логику скрипта и избежать возможных ошибок.
Важно: только очень простой скрипт будет работать идеально с первого раза. Именно поэтому скрипты всегда нужно тестировать и в моменте править. Так вы проверяете эффективность работы.
Тестирование скрипта состоит — это 3 главных действия:
- Запуск сценария на с разными наборами данных для проверки корректности выполнения;
- Поиск и исправление логических ошибок или некорректно написанных предположений в алгоритме;
- Исправление багов и оптимизация кода.
Уделите особое внимание нетипичным или редким историям, чтобы скрипт всегда работал безошибочно после отладки.
Инструменты для автоматизации разработки
Утилиты командной строки
find
— инструмент для поиска файлов в структуре каталогов. Он помогает найти файлы по имени, размеру, дате изменения и другим параметрам. Например, find можно использовать для поиска всех файлов с расширением .txt, которые были изменены за последние 7 дней:
find /path/to/directory -name "*.txt" -mtime -7
grep
— инструмент для поиска текстовых строк в файлах на основе регулярных выражений. Он поможет в фильтрации данных или поиске конкретной информации в больших логах:
grep "ошибка" /var/log/syslog
awk
— язык программирования для обработки текстовых данных. Подойдёт для анализа и преобразования текста с данными из таблиц:
awk '{sum += $1} END {print sum}' file.txt
Библиотеки и модули для Python
Модуль os
в Python помогает проводить манипуляции с файлами и каталогами, облегчает управление процессами и так далее:
shutil
— модуль для проведения операций с файлами: копирование, перемещение, архивирование:
Модуль schedule
поможет в планировании выполнения задач на Python. Скрипт автоматизации:
Планировщики задач
cron
— системный планировщик задач для UNIX-систем, который помогает автоматизировать выполнение сценариев или команд по расписанию:
Запуск script.sh
каждый день в 3 часа утра:
0 3 * * * /path/to/script.sh
Команда at
нужна для одноразового выполнения задач в определённое время. Подойдёт для нерегулярных задач:
echo "python my_script.py" | at 14:00
Советы по улучшению разработки скриптов
Чтобы создавать действительно классные, точные и безошибочные скрипты, нужно придерживаться трёх основных правил: логирование для понимания статуса выполнения скрипта и поиска багов, использование модулей и расширений для проверки ошибок, документирование кода через README-файлы для дальнейшей повторной работы со скриптами.
Используйте логирования
Логирование — вещь важная для любого типа кода. Оно помогает понять, в каком статусе находится выполнение скрипта и помогает в поиске проблем. 3 главные плюса логирования:
- Логи помогают понять, какие части кода выполняются, а какие нет — полезная функция при работе со сложными процессами и задачами.
- Логи также могут содержать информацию об ошибках и исключениях.
- С помощью логов можно отслеживать фактическое время на выполнение разных частей скрипта — а значит, анализировать производительность будет проще.
Для внедрения логирования можно использовать встроенные библиотеки языков программирования: logging в Python или logger в Bash.
Добавьте проверки ошибок
Ни один код не защищён от ошибок, а потому важно заранее подумать о багах и разработать способ их «поимки» и отладки. Так скрипт будет не только более стабильным и «обученным» на багах, но и сможет защитить данные от повреждений.
- Убедитесь, что все входные данные правильно заполнены перед первой проверкой работы скрипта.
- Используйте try-except в Python или похожие блоки в других языках для перехвата и правильной обработки ошибок.
- Возвращайте коды ошибок, чтобы лучше понимать природу проблему и вам, и конечному пользователю.
Документируйте код для повторного использования
Документирование кода — это не просто «акт доброй воли» для того, чтобы другие программисты могли учиться на вашем коде; документирование очень важно для того, чтобы повторно использовать скрипт в будущем:
- Опишите назначение функций и ключевых блоков кода — так в будущем вы (и другие пользователи) сможете быстрее понять структуру вашего скрипта.
- Прописывайте отдельные README-файлы для подробного описания принципа работы скрипта.
- Не пренебрегайте стандартами оформления кода, а активно пользуйтесь ими. Так код будет более легко читаемым и понятным для других.
Заключение
Использование скриптов значительно снижает количество рутинных задач, улучшает точность их выполнения и сильно сэкономит время в долгосрочной перспективе. Скрипты автоматизируют практически любые процессы разработки. Пока они работают, вы можете заняться более интересными и важными для вас задачами. Но нужно всегда помнить: автоматизированный, идеально работающий и адаптивный код — это не заслуга «машины», а заслуга разработчика, который занимался написанием скриптов. А значит, всегда нужно вкладываться в доработку, улучшение кода, поиск багов и их устранение, добавление новых функций и переменных.
254 открытий2К показов