Как автоматизировать простые задачи с помощью скриптов?

Рассказываем, какие скрипты нужны, чтобы автоматизировать задачи, и какие у них есть возможности.

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

Шаг третий — перемещаем файлы:

			for file in *; do
    if [[ -f $file ]]; then
        case $(file --mime-type -b "$file") in
            text/*) mv "$file" Documents/ ;;
            image/*) mv "$file" Images/ ;;
            video/*) mv "$file" Videos/ ;;
            *) mv "$file" Others/ ;;
        esac
    fi
done
		

Такой скрипт проверяет MIME-тип каждого файла и перемещает его в нужную папку. При этом вручную делать ничего не нужно — просто запустить скрипт.

Автоматизация сбора данных из интернета с помощью Python

Пример: допустим, вам нужно регулярно получать последние статьи с сайта.

Скрипт для автоматизации:

Шаг первый — запускаем библиотеку BeautifulSoup:

			import requests
from bs4 import BeautifulSoup
		

Шаг второй — указываем нужный URL и пишем запрос:

			URL = 'https://tproger.ru/'
response = requests.get(URL)
soup = BeautifulSoup(response.content, 'html.parser')
		

Шаг третий — парсим статьи со страницы:

			articles = soup.find_all('article')
for article in articles:
    title = article.find('h2').get_text()
    summary = article.find('p').get_text()
    print(f'Название: {title}\nОписание: {summary}\n')
		

Такой скрипт отправляет 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 помогает проводить манипуляции с файлами и каталогами, облегчает управление процессами и так далее:

			import os
os.mkdir('новый_каталог')
		

shutil — модуль для проведения операций с файлами: копирование, перемещение, архивирование:

			import shutil
shutil.copy('исходный_файл.txt', 'копия.txt')
		

Модуль schedule поможет в планировании выполнения задач на Python. Скрипт автоматизации:

			import schedule
def job():
    print("Работа выполняется")
schedule.every().day.at("10:30").do(job)
while True:
    schedule.run_pending()
    time.sleep(1)
		

Планировщики задач

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К показов