Домой Рейтинги Софт Автоматизация рутинных задач с помощью Bash-скрипта

Автоматизация рутинных задач с помощью Bash-скрипта

Пользователь разработал Bash-скрипт для автоматизации управления файлами, обработки почты, учета финансов и планирования, опасаясь вносить изменения в работающую систему.

5
0

Еженедельные рутинные задачи, такие как сортировка файлов, проверка почты или оплата счетов, требуют много времени, но почти не задействуют интеллектуальные ресурсы. Чтобы оптимизировать этот процесс, был создан единый инструмент на базе Bash-скрипта. Система управляет файловой структурой, обрабатывает электронные письма, ведет финансовый и медицинский учет, а также формирует еженедельную повестку дня, интегрируясь с такими сервисами, как Gmail, Google Calendar, Notion и Standard Chartered Bank.

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

Управление файлами и электронной почтой

Первым этапом автоматизации стала папка «Загрузки», в которую постоянно поступают новые данные. Скрипт сортирует файлы по дате или типу и присваивает им стандартизированные имена, например, Invoice_AcmeCo_2401_V3. Также реализована функция проверки старых скриншотов, которые автоматически переносятся в папку для последующего ручного просмотра и очистки.

Обработка почты включает удаление новостных рассылок старше семи дней, а также автоматическую маркировку и архивацию писем от выбранных отправителей. Система также отслеживает счета: при получении письма от компании скрипт скачивает вложение, переименовывает файл на основе данных о дате и названии организации, после чего перемещает его в соответствующую директорию.

Финансы, аналитика и планирование

Помимо сортировки документов, скрипт через API взаимодействует с банковскими сервисами, такими как Standard Chartered Bank, для автоматического внесения баланса в электронные таблицы. В конце недели система анализирует активность в Git, Trello и Notion, создавая итоговый рабочий отчет.

Планирование также автоматизировано: каждое воскресенье скрипт собирает информацию из Google Calendar и Notion, формируя повестку на неделю. Он анализирует свободные временные интервалы и блокирует время для фокусировки, избегая конфликтов в расписании. Кроме того, скрипт через Fitbit API выгружает данные о количестве шагов и качестве сна для построения графиков трендов.

Структура Bash-скрипта и использование Cron

Система представляет собой один Bash-файл, состоящий из множества специализированных функций. Для запуска задач без открытия терминала используется планировщик Cron: ежедневные задачи выполняются автоматически, а еженедельные функции запускаются в воскресенье. Использование конструкции case позволяет управлять наборами задач через аргументы: daily, weekly или watch.

автоматизация рутинных задач — иллюстрация 2 к материалу

Функции очистки файлов полагаются на стандартные инструменты macOS, такие как команда find. Интеграция с облачными сервисами реализована через OAuth-авторизацию в проектах Google Cloud. При этом стоит учитывать, что Google прекращает поддержку устаревшего Fitbit Web API, поэтому для новых проектов рекомендуется использовать Google Health API.

Перспективы использования n8n для автоматизации

Несмотря на эффективность, текущая реализация на Bash сложна в поддержке, из-за чего автор старается не менять код без острой необходимости. В качестве альтернативы рассматривается платформа n8n, которая позволяет разделить автоматизацию на два визуальных рабочих процесса: ежедневный и воскресный.

В n8n триггеры расписания заменяют записи Cron, а готовые узлы для Gmail и Google упрощают аутентификацию. Для подключения к другим сервисам, например, Fitbit или банковским API, можно использовать узел HTTP Request. Хотя работа с n8n по-прежнему требует настройки API-ключей, визуальный интерфейс значительно облегчает отладку по сравнению с длинным файлом на Bash.

автоматизация рутинных задач — иллюстрация 3 к материалу
Рабочий процесс в n8n для Google Sheets

Технические нюансы реализации автоматизации

Фундаментальная структура скрипта построена на использовании Bash-функций, где каждая отвечает за узкоспециализированный процесс: от сортировки загрузок до взаимодействия с облачными API. Логика работы скрипта заключена в компактном блоке, который обеспечивает выполнение ежедневных и еженедельных процедур:

#!/usr/bin/env bash
set -euo pipefail
BASE_DIR=»$HOME/automation»
source «$BASE_DIR/.env»
daily_tasks() { … }
weekly_tasks() { … }
case «${1:-daily}» in
daily) daily_tasks ;;
weekly) weekly_tasks ;;
watch) monitor_page «$2» ;;
*) echo «Use: $0 daily | weekly | watch » ;;
esac

Аргумент watch позволяет дополнительно отслеживать изменения на конкретных веб-страницах, добавляя гибкости в управлении задачами. Для манипуляций с файлами используются штатные средства macOS: команда find осуществляет поиск объектов, чей возраст превышает установленный лимит дней, после чего mv перемещает их в целевые директории или в папку для «рецензирования» (review directory).

автоматизация рутинных задач — иллюстрация 4 к материалу
Пример рабочего процесса n8n

Особенности взаимодействия с API и сервисами

Интеграция со сторонними сервисами требует более глубокого погружения в настройку учетных данных. Для Gmail и Google Calendar необходимо создать проект в Google Cloud и получить OAuth-ключи. После завершения авторизации скрипт получает возможность использовать поисковые запросы, аналогичные тем, что доступны в веб-интерфейсе Gmail. Например, функция очистки почты формулирует поисковый запрос для поиска рассылок старше семи дней, после чего программа запрашивает ID соответствующих сообщений для последующего удаления или перемещения.

При обработке счетов реализована строгая логика фильтрации: скрипт распознает письма от доверенных компаний, извлекает вложения и динамически формирует имя файла, включая в него название организации и дату биллинга. Аналогичный паттерн запросов применяется для взаимодействия с API носимых устройств при сборе данных о сне и физической активности.

Важное замечание по API

Разработчикам следует помнить, что Google в текущем месяце завершает поддержку устаревшего Fitbit Web API. Любое новое решение по автоматизации трекинга здоровья должно опираться на актуальный Google Health API — попытка интеграции через старые эндпоинты приведет к ошибкам аутентификации.

автоматизация рутинных задач — иллюстрация 5 к материалу
Использование ИИ в n8n для получения постов с Reddit и Hacker News

Почему Bash — это «сложный выбор»

Главная проблема текущей реализации заключается в её хрупкости. Автор отмечает, что Bash-скрипт стал настолько разросшимся и сложным, что любое изменение кода вызывает опасение нарушить работающий механизм. Хотя система успешно справляется с регулярными задачами — от оплаты счетов до создания «времени для фокусировки» (focus time), избегая накладок в календаре — масштабирование такого решения требует значительных усилий.

Переход на n8n представляется более логичным шагом с точки зрения поддержки:

  • Визуализация: n8n позволяет разбить громоздкий код на два логических блока: ежедневные задачи (файлы, почта, счета) и воскресные (отчеты и планирование).
  • Триггеры вместо Cron: Встроенный планировщик n8n (Schedule Trigger) полностью заменяет необходимость поддержки записей в планировщике системы.
  • Упрощенная отладка: Узлы для Gmail и сервисов Google берут на себя рутину с OAuth-аутентификацией, а узел HTTP Request позволяет подключаться к любым внешним API, таким как Standard Chartered или Fitbit, без написания функций на Bash.

Несмотря на то, что называть n8n полноценным «no-code» инструментом было бы преувеличением — пользователю все равно необходимо понимать структуру данных и API-авторизацию, — визуальный интерфейс платформы делает процесс отладки значительно прозрачнее. На текущий момент автор предпочитает сохранять статус-кво: скрипт выполняет свою роль, экономя часы еженедельного времени, и это оправдывает сложность его поддержки.