Домой Гайды, инструкции и лайфхаки Автоматизация Android через Termux и Tasker: выполнение Linux-команд по событиям системы

Автоматизация Android через Termux и Tasker: выполнение Linux-команд по событиям системы

Объединение эмулятора терминала Termux с приложением автоматизации Tasker позволяет запускать Linux-скрипты на Android в ответ на системные события без необходимости root-прав.

11
0

Современные инструменты автоматизации на мобильных устройствах позволяют переложить рутинные задачи на плечи операционной системы. Связка эмулятора терминала Termux и приложения Tasker дает пользователям возможность запускать полноценные Linux-скрипты в ответ на действия Android, например, при подключении зарядного устройства, смене сети Wi-Fi или создании нового файла камерой. Для обеспечения взаимодействия между этими программами используется вспомогательный плагин Termux:Tasker. Главным преимуществом такой архитектуры является отсутствие необходимости в root-правах для выполнения большинства операций.

Микрокомпьютер Raspberry Pi в процессе создания сетевого хранилища данных
Сжатие файлов и их отправка на сервер Raspberry Pi через SSH

Почему требуется связка двух приложений

Разделение функций между приложениями обусловлено спецификой их работы. Tasker эффективно отслеживает системные триггеры Android, такие как статус зарядки, подключение к конкретной домашней сети или запись файла в хранилище. Однако сам Tasker не обладает возможностями для запуска сложных Linux-команд или работы с продвинутыми инструментами вроде SSH-передачи с ключами и специализированными редакторами метаданных. В то же время Termux предоставляет полноценное Linux-окружение с собственным менеджером пакетов, но лишен надежных механизмов для отслеживания событий уровня Android.

Объединение этих инструментов позволяет создать автоматизированный рабочий процесс, где Tasker выступает в роли «диспетчера» триггеров, а Termux — исполнителя команд. Примечательно, что решение поддерживает двустороннюю связь: если в настройках плагина Termux:Tasker отключить переключатель «Execute in a terminal session» и включить «Wait for result», скрипт может вернуть в Tasker данные (stdout, stderr и код выхода), которые затем можно использовать, например, для вывода уведомлений о состоянии сторонних сервисов.

Практическое применение: бэкапы и обработка фото

Один из сценариев использования связки — автоматическое сжатие папки с рабочими файлами и их отправка на домашний сервер Raspberry Pi через SSH. Процесс запускается автоматически при подключении телефона к зарядке или при входе в домашнюю сеть Wi-Fi. Поскольку сессия не является интерактивной, аутентификация в SSH должна осуществляться исключительно на основе ключей, сгенерированных внутри Termux, а публичный ключ должен быть размещен на сервере. Важно при настройке увеличить время ожидания (timeout) плагина выше стандартных 10 секунд, чтобы процесс успел завершиться без ошибок.

Другой полезный пример — очистка метаданных EXIF. Каждое фото, создаваемое камерой, содержит GPS-координаты. Использование Tasker для мониторинга папки камеры позволяет автоматически запускать инструмент exiftool сразу после появления нового файла. Поскольку Android не предлагает встроенных пакетных средств для такой задачи, автоматизация через Linux-утилиту в Termux становится оптимальным решением. Стоит учитывать, что скрипту необходимо предоставить разрешение на доступ к хранилищу через команду termux-setup-storage, а для исключения ошибок записи рекомендуется добавить небольшую паузу (sleep) в начало скрипта.

Настройка среды и ключевые требования

Важным аспектом является установка ПО: разработчики Termux рекомендуют избегать версии из Google Play Store, так как она давно не обновляется. Лучшим выбором будет установка самого эмулятора и плагина Termux:Tasker из репозитория F-Droid, так как они должны быть подписаны одним и тем же ключом. После установки необходимо предоставить Tasker разрешение «Run commands in Termux environment» в разделе расширенных разрешений приложения.

Все скрипты должны располагаться в директории ~/.termux/tasker/, которую необходимо предварительно создать с правами доступа 700. Файлам в этой папке автоматически присваиваются права на выполнение. Важный нюанс — использование правильного «шебанга» в начале каждого скрипта: вместо стандартного /usr/bin/bash следует указывать путь #!/data/base/com.termux/files/usr/bin/bash. Наконец, критически важно добавить все три приложения в список исключений для оптимизации батареи, чтобы Android не прерывал выполнение фоновых процессов, что часто становится причиной поломки всей цепочки автоматизации.

Тонкости настройки и нюансы работы плагина

Одной из наиболее полезных функций интеграции является возможность получения обратной связи от скриптов. Плагин Termux:Tasker работает не только в одностороннем порядке: если настроить выполнение скрипта с ожиданием результата, переменные (включая вывод текста и коды завершения) передаются обратно в Tasker. Таким образом, можно реализовать систему мониторинга, которая, например, опрашивает через cURL состояние Pi-hole или Nextcloud через Tailscale, а затем отображает полученный статус в виде обычного уведомления Android. При этом крайне важно, чтобы значение таймаута было установлено больше нуля, иначе Tasker может «засчитать» выполнение скрипта как успешное, не получив при этом никаких данных.

Важным техническим требованием для корректной работы является использование специфического пути для интерпретатора в первой строке скриптов. Вместо привычного для десктопных Linux-систем /usr/bin/bash, необходимо использовать #!/data/data/com.termux/files/usr/bin/bash. Без этого указания выполнение команд в среде эмулятора на Android будет невозможно.

автоматизация Android через Termux и Tasker — иллюстрация 2 к материалу
Удаление GPS-метаданных из фотографий с помощью exiftool в автоматическом режиме

Особенности установки и безопасности

Выбор источника загрузки имеет решающее значение. Поскольку Termux и его плагины больше не обновляются в Play Store, установка из официального магазина может привести к несовместимости: плагин и основной терминал должны быть подписаны одним и тем же ключом разработчика, поэтому связка «версия из Play Store + версия из F-Droid» работать не будет. Рекомендуется использовать исключительно F-Droid.

При настройке прав доступа важно помнить о директории ~/.termux/tasker/. Она не создается автоматически, поэтому пользователю нужно создать её вручную и установить права доступа 700. Файлы, помещенные в эту папку, получают права на исполнение автоматически, что избавляет от необходимости вручную подтверждать запуск каждого скрипта через chmod.

Также не стоит игнорировать настройки энергосбережения системы. Android агрессивно «убивает» фоновые процессы, если приложения не добавлены в список исключений для оптимизации батареи. Если этого не сделать для всех трех компонентов (Tasker, Termux и плагина), цепочка автоматизации рано или поздно прервется в самый неподходящий момент, и диагностировать причину такой остановки будет крайне затруднительно.

Зачем вообще усложнять систему?

Главный аргумент в пользу такого решения заключается в том, что оно открывает доступ к инструментам, которые невозможно реализовать штатными средствами Android, включая встроенные функции от Google или Gemini Scheduled Actions. В частности, это касается пакетной обработки файлов, для которой в мобильных галереях обычно предусмотрены лишь однопользовательские операции «по нажатию». Использование exiftool в связке с автоматическим мониторингом файловой системы позволяет выполнять действия, которые происходят незаметно для пользователя сразу после того, как камера сохраняет новый снимок.

Несмотря на то, что процесс первоначальной настройки требует времени и вдумчивого изучения прав доступа (так как документация каждого из приложений предполагает, что пользователь уже знаком с особенностями второго), сама автоматизация после «прокладки труб» пишется за считанные минуты. Это дает возможность реализовать гибкую систему, при которой телефон не просто выполняет набор функций, заложенных производителем, а полноценно управляет файловыми потоками и Linux-утилитами в ответ на любые системные события.