Как запустить sh файл в termux

Обновлено: 07.07.2024


В прошлой части мы с вами познакомились с базовыми командами Termux'а, настроили SSH соединение с ПК, научились создавать alias'ы и установили несколько полезных утилит. В этот раз нам предстоит шагнуть еще дальше, мы с вами:

  • узнаем про Termux:API
  • установим Python и nano, а также напишем "Hello, world!" на Python
  • узнаем про bash-скрипты, и напишем скрипт с использованием Termux:API
  • используя bash-скрипт, Termux:API и Python напишем простую программку

Поскольку мы теперь понимаем, что делают вводимые команды, то со следующего шага я не буду так подробно расписывать каждое действие, но там где могут быть затруднения, пояснять буду обязательно.

Я часто применяю alias'ы, поэтому используемые в этой части сокращения показаны здесь:

План готов, можно приступать! И конечно же не забывайте про "волшебный Tab" (См. Часть 1).

Шаг 4

Погружаемся в кроличью нору Termux:API

API как много в этом слове для сердца кодера слилось

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

Для начала установим Termux:API из Google Play Market'а (после не помешает перезапустить Termux):


Далее нам нужно установить пакет API в консоли Termux'а:

Для экспериментов я использую Android 5.1.1, для владельцев Android 7 нужно «защитить» Termux: API, зайдя в ‘Настройки’ > ‘Защищенные приложения’, в противном случае вызовы API, такие как termux-battery-status , будут зависать. (См. wiki проекта)

Теперь стоит поближе познакомится с приобретенными возможностями. Самое свежее и подробное описание Termux:API можно найти на wiki проекта. Я же постараюсь выбрать самое наглядное и интересное, что позволит набить руку для самостоятельной работы в дальнейшем.

Несколько примеров Termux:API

    termux-battery-status
    Возвращает состояние батареи

Нетрудно заметить, что возвращаемые значения являются строками, словарями, списками словарей, в общем типами данных, с которыми прекрасно работает Python, поэтому следующим шагом мы его установим.

Шаг 5

Установим Python и nano

Для установки Python'а пишем в терминале:

Теперь у нас установлен 2 и 3 Python.

За время работы над статьей, я открыл для себя еще один текстовый редактор nano, который приглянулся мне больше чем vim, давайте его установим:

Пользоваться им проще чем vim'ом, и nano имеет более дружественный интерфейс. На Android устройстве все же удобнее vim.

HelloWorld на Python в Termux

По большому счету можно было обойтись и без этого пункта, но поставить Python в Termux и не написать HelloWorld, на мой взгляд, моветон.

Я не ставлю своей целью учить кого-либо Python’у, так что не знающие могут просто скопировать код (или начать изучать самостоятельно, благо литературы хватает), а знающие могут и сами что-нибудь наваять. А я "под шумок" еще покажу способ вводить текст в терминале без редактора.


Если в процессе ввода вы не заметили ошибку и уже нажали Enter, то перейти на строку выше не получится, для этого закончите ввод нажав Ctrl + D (можно вообще прервать Ctrl + Z) и повторите все с начала. Поскольку мы использовали ‘>’ то файл будет переписан полностью. По этой причине не рекомендую использовать такой метод ввода, если вы не уверены что напишете код сразу без ошибок.

Шаг 6

Bash-скрипты

Bash-скрипты это замечательный способ автоматизации работы с терминалом. Скрипт представляет из себя файл с расширением .sh (расширение не обязательно) содержащий набор команд терминала часть из которых мы уже изучили. Вот список большинства команд, все должно работать, но обратите внимание, что это список для "взрослого" Linux’а, а не для Termux’а, а вот просто шикарный материал по bash-скриптам.

При помощи скриптов можно автоматизировать практически все монотонные действия. Напишем простейший bash-скрипт выводящий значение из созданной им же переменной, я снова воспользуюсь cat’ом, вы же можете использовать нормальный текстовый редактор, а особо желающие себя потренировать могут использовать echo.



Один добрый человек справедливо заметил, что команда export лишняя если переменная используется в рамках одного скрипта, так как вынесет переменную в окружение, то есть сделает ее доступной вне скрипта, занимая лишнюю память. Таким образом после выполнения test.sh мы сможем обращаться к переменной $str из командной строки.

Bash-скрипт с Termux:API

Давайте напишем уже что-нибудь отличающееся от пресловутых HelloWorld’ов, но столь же бесполезное. Наш скрипт будет:

Сначала создадим папку для работы и скопируем туда hello-world.py как test.py, создадим в этой папке файлы test.sh и test.txt:

Теперь любым удобным способом в файл test.sh запишем скрипт:

Теперь находясь в папке bashscript пишем ./test.sh наблюдаем в терминале на Android устройстве:


Вот мы и написали запланированный bash-скрипт. Можно разбавить его выводом в консоль информации по выполнению каждого действия (при помощи echo), это оставлю для читателей.

Шаг 7

Сделаем хоть что-то полезное

Относительно полезное

За основу возьмем bash-скрипт, случайную строку из файла будем извлекать при помощи подпрограммы на Python’е. Составим план работы скрипта:

Определимся с названиями директории и файлов приложения:

  • папка rndstr в домашней директории
    • source — файл из которого будем брать строки
    • rndstr.py — подпрограмма выводящая в консоль случайную строку из файла source
    • rndstr.sh — файл скрипта

    Создаем директорию приложения и переместившись в нее создаем там файлы.

    Первые два пункта плана скрипта можно объединить конвейером, в итоге, используя Termux:API получаем:

    В файл source вы можете поместить любой текст логически разделенный на строки, я решил поместить афоризмы:

    Нам осталось создать подпрограмму извлекающую случайную строку из файла source.
    Распишем алгоритм работы подпрограммы:

    1. Открываем файл source
    2. Считаем количество строк в открытом файле
    3. Закрываем файл (нечего его лишнее время открытым держать)
    4. Генерируем случайное целое число в пределах количества строк файла source
    5. Открываем файл source
    6. Выводим строку под номером сгенерированного числа
    7. Закрываем файл

    Реализуем алгоритм на Python (я пишу под Python 3.7):

    После того как файлы созданы и записаны, нужно дать права на исполнение файлу rndstr.sh , и создать alias для быстрого запуска.

    Теперь введя в терминале rnst мы получим в буфер обмена случайный афоризм, который, например, можно использовать в переписке.

    Вот мы и написали хоть что-то полезное. Относительно полезное.

    Я намеренно в последнем шаге не стал приводить скриншоты и не разобрал подробно некоторые действия, расписав только содержимое файлов, чтобы у читателей была возможность поработать самостоятельно.

    Изначально я планировал показать в этом цикле как пользоваться nmap, sqlmap, но и без меня уже много статей на эту тему. Если есть желание, чтобы я продолжил "Termux шаг за шагом", то ниже есть опрос, а в комментариях можете предложить о чем еще написать.

    termux services android

    Многие продвинутые пользователи android зачастую так или иначе начинают работать с операционной системой так, как если бы они работали с обычным linux-дистрибутивом. Запущенный терминал, а иногда и ssh-сессия, использование линуксовых утилит, а иногда даже и запуск окружения рабочего стола. Запуск сервисов также является типовой задачей при таком использовании устройства. Под катом описываю, как запускать сервисы в termux на android.

    Как это работает

    Все сервисы внутри termux работают благодаря runit. Это замена стандартной системы инициализации, похожей на init. В некоторых дистрибутивах используется как родная система управления сервисами. Подробнее но в общих чертах о том что это такое можно прочитать здесь. А вот здесь находится вики-страница termux-services, это как раз то что потребуется.

    Создание сервиса

    Прежде всего необходимо установить пакет.

    Далее необходимо создать каталог и файлы в нем, описывающие сервис. В моем случае каталог с описанием всех сервисов /data/data/com.termux/files/usr/var/service. Если посмотреть содержимое, там уже может находиться описание некоторых сервисов.

    Создаем здесь папку с названием сервиса и переходим в нее.

    И описываем в нем то, как будет запускаться сервис.

    Первая строчка в комментарии это путь к оболочке, далее сама команда.

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

    Но в целом идея должна быть понятна: runit возмет именно этот файл за инструкцию как запускать сервис. Сохраняем изменения в файле и выходим (Ctrl+x и Enter). Далаем файл исполняемым.

    И теперь можно запускать сервис

    Если все прошло без ошибок (а если они будут вы увидите их в выводе), то процесс можно будет найти в списке

    htop termux service android

    Также рекомендую включить для termux блокировку от глубокого сна.

    Необходимо подтвердить блокировку на самом устройстве (также как при подключении к ПК через ADB). Это для того, чтобы устройство не уходило в сон, а вместе с ним и все запущенные в окружении termux процессы.

    Termux - Русскоязычное сообщество

    Предупреждение: данная тема будет тщательно модерироваться, а так же проверяться на наличие вредоносных скриптов. При нарушении правил пользователи будут безпощадно баниться.

    *Название скрипта;
    *Описание;
    *Задействованные пакеты;
    *Ссылка на скрипт;
    *Хэш-теги

    Примечание: если скрипт написан не на стандартном *nix-языке, напишите способ его запуска

    Скрипт с набором команд установки metasploit

    Требующиеся пакеты:
    * git

    Ссылка:(ссылка на облако со скриптом)

    *Публиковать вредоносные скрипты, без указания, что они таковыми являются
    Примечание: при публикации вредоносного скрипта пишите в названии "ВРЕДОНОСНЫЙ СКРИПТ"(да, именно капсом)

    *Публикация не имеющих какую-либо практическую пользу скриптов
    Исключение: ASCII-art выполненный в виде скрипта

    *Дублирование публикации
    Исключение: обновление скрипта, но в таком случае, удаляйте прошлую запись

    Примечание: некоторые скрипты могут быть написанны на других языках, в таком случае способ запуска описан в посте со скриптом

    Петр Иванов

    После успешной установки у нас появится еще один скрипт update.sh. Это скрипт удаленного обновления новых пакетов одним кликом. Советую запускать его раз в 2-3 дня.

    Алексей Садкович

    Небольшой стиллер.
    Создаёт exe-файл, который копирует все указанные директории в папку рядом.

    Установка и запуск в полноценной ОС:

    Для работы в termux:

    Возможно буду добавлять новые функции.
    Что примечательно, EXEшники запускаются и в termux, скорее всего связано с тем, что исходник на питоне.

    Алексей Садкович

    Зависимости: termcolor, scapy

    Запуск в интерактивном режиме:

    Запуск с аргументами:

    Кирилл Еременко

    Алексей Садкович

    Тестировщик подключения к устройству по заданному протоколу.

    Зависимости: termcolor, paramiko

    -h, —help Помощь
    -t, —target Цель
    -T, —targets Файл со списком целей
    -l, —login Логин
    -p, —password Пароль
    -f, —fast Ускоренный режим (есть вероятность пропустить некоторые адреса)
    -m, —mode Протокол (SSH/FTP)

    Генератор списка целей:

    -g, —generate Диапазон адресов
    -o, —output Имя файла

    DELETED

    Мелкий скрипт быстрого изменения клавиш доп. панели для кодинга

    Зависимость
    Прописать перед использованием

    Вова Титанов

    Bot Bot

    OneShot — инструмент для проведения атак на протокол WPS

    Внимание: на данный момент наблюдаются проблемы с запуском на некоторых устройсвах/прошивках, связанные с тем, что при отключении Wi-Fi в настройках системы удаляется соответствующий беспроводной интерфейс. Чтобы убедиться, что ваше устройство не имеет данной особенности, отключите Wi-Fi и просмотрите список беспроводных интерфейсов командой iw dev

    Эмиль Тихонов

    Так же присутствует функция для включения сетевого интерфейса после отключения через time-out
    P.s. Функция включения начинает работать только после того, как закончится функция выключения

    К сожалению, работает лишь на полноценных *nix дистрибутивах.
    P.s. в termux при наличии sudo тоже работает, но wifi модуль через пару секунд переподключается обратно к сети


    Termux – приложение с открытым исходным кодом, реализующее Linux-подобную среду, взаимодействие с которой происходит посредством консоли без необходимости иметь root-права на устройстве. Доступно для устройств с Android >= 7 (раньше было 5).

    Termux бесплатен. Имеет несколько дополнительных модулей (см.ниже), которые можно купить на Google Play, свободно скачать на F-Droid или самостоятельно собрать из исходников на github. При этом, нельзя смешивать установку приложения, скачанного, например, на Google Play с установкой модуля, скачанного на F-Droid, т.к. они будут несовместимы из-за разных ключей подписи, используемых при сборке (сам не проверял).

    Установка и настройка

    2) Обновить внутренние пакеты

    3) При необходимости, настроить ssh-сервер и подключиться удаленно к оболочке Termux с компьютера (подробнее ниже, а также в статье)

    3) При необходимости, настроить панель горячих клавиш и клавиатуру (подробнее ниже)

    4) Открыть доступ к внешнему хранилищу устройства (подробнее ниже)

    5) При необходимости, установить пакет для поддержки команд Termux API (подробнее ниже):

    $ pkg install termux-api

    6) При необходимости запуска скриптов с помощью дополнения Termux Widget, создать специальные каталоги в домашней директории $HOME и скопировать туда скрипты (подробнее ниже).

    7) При необходимости, установить и настроить git с использованием парольной аутентификации к удаленному репозиторию или с помощью ssh-ключей (описание в статье).

    Подключение к Termux по ssh

    Для подключения к оболочке Termux с компьютера (хоста) по протоколу ssh, нужно установить пакет OpenSSH:

    Запуск ssh-сервера осуществляется командой sshd , после чего на порту 8022 открывается порт для подключения.

    Проверить работу ssh-сервера на нужном порту можно командой netstat :

    Должны быть выведены 2 строки с надписью LISTEN .

    Termux не поддерживает парольную аутентификацию по SSH и поэтому нужно будет использовать SSH-ключи. Более подробно про ssh-ключи и их использование написано в статье Работа с ssh-ключами.

    Если имеющихся ssh-ключей хостовой машины нет, то их нужно создать. На Linux это делается с помощью команды ssh-keygen , на Windows с помощью программ BitVise-SSH или PuTTYgen.

    Публичный ключ (по-умолчанию называется id_rsa.pub ) нужно будет загрузить на телефон и скопировать в файл

    Например, подключаем телефон к хостовой машине как дисковый накопитель, копируем файл публичного ключа в корень памяти телефона. Затем в Termux выполняем команду:

    Команда добавляет содержимое файла id_rsa.pub в файл authorized_keys .

    Файл публичного ключа уже не нужен, удаляем:

    Далее подключаем телефон к сети Wi-fi, узнаем его IP и подключаемся к нему с помощью SSH-клиента. С этого момента работа в Termux с клавиатуры компьютера становится намного удобнее.

    Настройка горячих клавиш и клавиатуры

    Панель горячих клавиш и клавиатуры можно настроить (FAQ: Touch Keyboard).

    Редактирование панели с кнопками (создать файл при отсутствии):

    / .termux / termux .properties

    Для себя настроил вот такие кнопки:


    Можно настроить многострочное отображение панели (но оказалось неудобно, строчки узкие).

    Клавиши, не попавшие в панель, можно вызвать с помощью комбинаций клавиш Up,Down и букв на клавиатуре (не уверен, что все).

    Доступ к внешней памяти устройства

    Чтобы запросить для Termux доступ к внешнему хранилищу телефона, нужно выполнить команду:

    При этом запросится разрешение WRITE_EXTERNAL_STORAGE .

    После этого в домашнем каталоге $HOME (

    или / data / data / com .termux / files / home ) появится каталог storage , где будут содержаться симлинки на реальные каталоги внешнего хранилища:

    Если этого не сделать, то оболочке будет доступен только приватный для приложения участок памяти / data / data / com .termux / files , который недоступен любому файловому менеджеру, если у вас нет root прав на устройстве.

    Дополнения

    Дополнение Termux:API

    Для запуска команд нужно установить пакет termux-api :

    Некоторые интересные команды:

    /.bash_profile )
    2) добавить вызов termux-wake-unlock в файл

    Для нескольких сеансов придется самостоятельно управлять вызовом разблокировки. Но есть возможность вызвать bash один раз и использовать byobu для запуска нескольких сеансов bash в рамках одного сеанса Termux.

    Ошибка: Cannot execute file: .
    Причина: У файла не задано право на выполнение (x).

    Примечание:
    Файлам во внешней памяти нельзя предоставить право на выполнение. Только в каталоге $HOME .

    $ termux-notification -i 1234 -t "Уведомление в шторке" --action

    Дополнение Termux:Widget

    С помощью дополнения Termux:Widget на рабочий стол устройства можно добавить виджет со списком bash-скриптов для их быстрого запуска.

    При этом, скрипты могут быть запущены двумя способами:

    а) в терминале Termux. Т.е. при запуске скрипта будет открыто окно терминала Termux, в котором и будет происходить выполнение скрипта.

    В этом случае скрипты нужно положить в специальный каталог .shortcuts в домашнем каталоге.

    Для запуска фоновых скриптов их нужно поместить в подкаталог .shortcuts / tasks домашнего каталога.

    Если скрипт запускается в фоне, и открытает какие-либо визуальные окна (например, запускает другое приложение), то в системе Android (начиная, примерно, с версии 7) приложению Termux нужно добавить соответствующее разрешение. Например, в Android 9: Свойства приложения (О приложении) -> Другие разрешения -> Отображать всплывающие окна, когда запущено в фоновом режиме . Иначе ничего не отобразится.

    Я храню сами файлы скриптов во внешней памяти устройства, а не в приватном участке памяти для приложения (например, каталог $HOME , или / data / data / com .termux / files / home ). Т.к., если приложение Termux будет удалено, то его приватный каталог тоже очистится.

    Для этого, с помощью команды ln , на сами файлы скриптов можно создать символьные ссылки (симлинки), которые положить в каталог .shortcuts :

    $ ln - s $HOME / storage / shared / real_path_to_scripts / script .sh $HOME / .shotcuts / script .sh

    Также, не забудьте сделать исходный файл скрипта исполняемым:

    $ chmod + x $HOME / storage / shared / real_path_to_scripts / script .sh

    Интерпретаторы скриптов

    и перезапустите сеанс Termux.

    Она заменяет путь к интерпретатору / bin на / data / data / com .termux / files / usr / bin (сокращенно $PREFIX / bin ) в самих файлах скриптов. Но это устаревший способ.

    А вообще, при проблемах в скриптах с путями к интерпретаторам возникает ошибка:

    "Bad Interpreter: No such file or directory"

    Выполнение скриптов из сторонних приложений

    Как было раньше: (развернуть) Как было раньше: (свернуть)

    На данный момент, с помощью сервиса RunCommandService из своего приложения можно отправлять намерения ( Intent ) в среду Termux для выполнения необходимых команд.

    Termux
    версия: 0.117

    Последнее обновление программы в шапке: 20.07.2021

    Прикрепленное изображение

    Прикрепленное изображение

    Прикрепленное изображение

    Прикрепленное изображение

    Прикрепленное изображение

    Прикрепленное изображение

    Прикрепленное изображение

    Краткое описание:
    Termux сочетает в себе мощные эмуляцию терминала с обширной коллекцией пакетов Linux.

    Termux combines powerful terminal emulation with an extensive Linux package collection.

    • Enjoy the bash and zsh shells.
    • Edit files with nano and vim.
    • Access servers over ssh.
    • Compile code with gcc and clang.
    • Use the python console as a pocket calculator.
    • Check out projects with git and subversion.
    • Run text-based games with frotz.

    At first start a small base system is downloaded - desired packages can then be installed using the apt package manager known from the Debian and Ubuntu Linux distributions. Access the built-in help by long-pressing anywhere on the terminal and selecting the Help menu option to learn more.

    Требуется Android: 7.0 и выше
    Русский интерфейс: Нет

    Если кому-то лень самому собирать, в прицепе моя сборка с плагинами. Отдельно плагины из этой сборки не будут работать с версией из маркета, так как я все подписал своим серификатом, который ессно не совпадает с сертификатом автора.

    Если кто-то хочет собрать из исходников, то помимо android sdk также потребуется ndk.

    Хотя исходники платных плагинов открыты, я один плагин купил по-любому, потому что очень уж хочется поддержать разработчика за такой мега-подарок.

    *ВАЖНО*: Только для андроид версии 5.х и выше!

    В чем отличие от Linux Deploy и других приложений, которые запускают linux в chroot'e? И отличается ли скорость работы от оных?

    Прикрепленное изображение

    Версия 0.37 не ставится. CianogenMod 12 Micromax Q415 Версия 0.37 не ставится. CianogenMod 12 Micromax Q415
    так ничего удивительного - у вас конфликт цифровых подписей. предыдущая установлена не с маркета, верно ? И не забываем что нужно будет либо переподписать все модули одинаково либо удалить . Кстати разыскивается модуль в свободном доступе Termux:Float.
    В новой версии наконец-то на моем интеле все заработало, но тоже пришлось удалить версии с F-droid . Что сильно огорчило ибо Termux:Styling и Termux:Widget там были бесплатные , а в маркете хотят денюшек. Автор думаю и основную консоль как обкатает сделает платной Termux v0.46 + Add-ons (Recompiled) Rus
    Пересобрал из исходников, добавил перевод. Ставить начисто или отключать проверку подписи.

    Termux v0.46:
    • Work better with the stock CyanogenMod and AOSP keyboards.
    • Remove the shaking of the terminal on a bell character introduced in v0.44.
    • Restore the ability to press Enter on the on-screen Android TV keyboard.
    termux-app_v0.46.apk ( 176.21 КБ )

    Termux:API v0.12:
    • For use with termux-api version 0.21 or later. Run apt update && apt upgrade to ensure that the latest packages are installed.
    • Run any command with a -h flag to learn more.
    • Support the new termux-notification-remove command to remove a notification.
    • Add several options to termux-notification.
    • Add new commands for wifi information: termux-wifi-connectioninfo and termux-wifi-scaninfo.
    termux-api_v0.12.apk ( 68.38 КБ )

    Termux:Styling v0.16:
    • Add monochrome White on Black and Black on White color schemes.
    termux-styling_v0.16.apk ( 1.72 МБ )

    Termux:Task v0.1:
    • Initial release for testing and feedback.
    termux-task_v0.1.apk ( 942.95 КБ )

    Termux:Boot v0.1:
    • Initial release for testing and feedback.
    termux-boot_v0.1.apk ( 26.4 КБ )

    Читайте также: