Termux android возможности фишки

Программирование на телефоне используя эмулятор терминала Termux

Приветствую читателей! В этой статье я расскажу о том, как можно, имея android телефон, писать программы. Говорю сразу — root права не нужны.

Что нам понадобится?

Первое, что нам понадобится — андроид телефон со установленным на него приложением Termux (есть в Google Play). Для полноценной работы с терминалом, нам нужно достаточно памяти. У меня с десятками установленных пакетов приложение занимает 1.5 ГБ памяти.
Так же, для комфортного кодинга желательно, чтобы телефон был с поддержкой OTG, и у вас была клавиатура с подключением по USB, чтобы писать код на клавиатуре (куда удобнее). Если уж нет этого, то качаем клавиатуру Hacker’s Keyboard. В ней есть клавиша Ctrl, что нам важно.

Почему именно Termux?

Termux имеет в арсенале достаточно пакетов для работы с языками программирования: C/C++, Python, Golang, PHP, Lua.
Так же присутствуют базы данных, я знаю только о mariadb и postgresql.

Начало


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

  • pkg search — команда для поиска пакетов. Пример: pkg search vim
  • pkg install — команда для установки пакета. Пример: pkg install vim

Для кодинга нам понадобится текстовой редактор. Здесь есть разные варианты, я выбирал Vim и вкратце расскажу, как с ним работать.
Установка vim:

Для примера работы с vim напишем «Hello World» на С.

После этого запустится Vim. Чтобы начать писать код, нужно нажать на клавишу «i».
Пишем код:

После этого нажимаем на клавишу «Esc», ставим двоеточие и пишем wq («:wq»). Это сохранит наш файл и изменения в нём (w — write) и закроет его (q — quit).

Важно знать!

w — сохранить изменения в файле
wa — сохранить изменения во всех файлах
q — закрыть файл
qa — закрыть все файлы
wq — сохранить изменения и закрыть файл

Теперь нам нужно скомпилировать этот код. Для начала установим компилятор:

Далее пишем следуюющее:

main.c — файл с нашим кодом
program — наша програмка.

Теперь можем запустить нашу програмку и посмотреть, работает ли она:

Источник

Termux шаг за шагом (Часть 2)

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

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

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

Читайте также:  Для чего android system web viewer

Я часто применяю 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
    Возвращает состояние батареи


termux-brightness
Устанавливает яркость экрана от 0 до 255


termux-toast
Показывает временное всплывающее уведомление


termux-torch
Включает фонарик


termux-wifi-scaninfo
Возвращает информацию о последнем сканировании сетей Wi-Fi

Нетрудно заметить, что возвращаемые значения являются строками, словарями, списками словарей, в общем типами данных, с которыми прекрасно работает 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’ов, но столь же бесполезное. Наш скрипт будет:

  1. выполнять запрос API termux-battery-status
  2. сохранять полученные данные в файл test.txt
  3. выводить данные из файла на экран
  4. выполнять написанную ранее программу hello-world.py
  5. полученные от программы данные записывать в файл test.txt
  6. выводить данные из файла на экран
  7. переносить данные из файла в буфер обмена
  8. выводить на экран содержимое буфера обмена
  9. выводить всплывающее сообщение с данными из буфера обмена

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

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

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

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

Шаг 7

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

Сформулируем техзадание
Приложение должно после запуска помещать в буфер обмена случайную строку из файла и оповещать об этом всплывающим сообщением.

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

  1. Запустить подпрограмму
  2. Передать результат работы подпрограммы в буфер обмена
  3. Вывести всплывающее сообщение

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

  • папка 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 android возможности фишки

Использование: termux-job-scheduler [опции]
Запланируйте выполнение сценария через определенные промежутки времени.
—pending список ожидающих заданий и выход (по умолчанию false)
—cancel-all boolean отменить все отложенные задания и выйти (по умолчанию false)
—cancel логическое отменить заданный идентификатор задания и выйти (по умолчанию false)

Варианты планирования:
—script путь к вызываемому скрипту
—job-id int id работы (перезапишет любую предыдущую работу с тем же идентификатором)
—period-ms int расписание заданий примерно на каждый период-мс миллисекунды (по умолчанию 0 означает один раз)
—network text запускается, только когда этот тип сети доступен, по умолчанию none (any | unmetered | cell | not_roaming | none)
—battery-not-low boolean запускается только когда батарея не разряжена, по умолчанию true (по крайней мере, Android O)
—storage-not-low логический запуск только тогда, когда объем памяти не низкий, по умолчанию false (по крайней мере, Android O)
—charging boolean запуск только при зарядке, по умолчанию false
—trigger-content-uri текст (по крайней мере, Android N)
—trigger-content-flag int default 1, (по крайней мере, Android N)

list: список ключей, хранящихся в хранилище ключей.
-d Подробные результаты (включая основные параметры).

delete: окончательно удалить данный ключ из хранилища ключей.
псевдоним Псевдоним ключа для удаления.

generate: создать новый ключ внутри аппаратного хранилища ключей.
псевдоним псевдоним ключа.
-a alg Алгоритм для использования («RSA» или «EC»). По умолчанию RSA.
-s размер Размер ключа для использования. Для RSA возможны варианты 2048, 3072и 4096. Для ЕС, варианты 256, 384 и 521.
-u срок действия Срок действия пользователя в секундах. Пропустить, чтобы отключить. При включении ключ может использоваться только для продолжительность указана после разблокировки устройства. После время прошло, пользователь должен повторно заблокировать и снова разблокируйте устройство, чтобы иметь возможность использовать этот ключ.

sign: подписать с использованием данного ключа, данные читаются из стандартного ввода и подпись выводится на стандартный вывод.
alias Псевдоним ключа, используемого для подписи.
algorithm Алгоритм для использования, например, ‘SHA256withRSA. Это должно соответствовать алгоритму ключа.

verify: проверить подпись. Данные (исходный файл) читаются из стандартного ввода.
alias Псевдоним ключа, используемого для проверки.
algorithm Алгоритм, который был использован для подписи этих данных.
signature Файл подписи, используемый при проверке.

использование: termux-location [-p провайдер] [-r запрос]
Получить местоположение устройства.
-p поставщик местоположения провайдера [gps/network/passive] (по умолчанию: gps)
-r запросить тип запроса, чтобы сделать [once/last/updates] (по умолчанию: один раз)

Использование: termux-media-player [file]

help Показывает эту помощь
info Отображает текущую информацию о воспроизведении.
play Возобновляет воспроизведение, если оно приостановлено
play Воспроизведение указанного медиа файла
pause пауза воспроизведения
stop прекращает воспроизведение

Использование: termux-media-scan [-v] [-r] файл [файл . ]
Сканируйте указанные файлы и добавьте их в провайдер медиа-контента.
-r сканировать каталоги рекурсивно
-v подробный режим

Источник

Оцените статью