단계별 Termux(2부)

В 마지막 부분 우리는 Termux의 기본 명령에 익숙해지고, PC에 대한 SSH 연결을 설정하고, 별칭을 만드는 방법을 배우고 몇 가지 유용한 유틸리티를 설치했습니다. 이번에는 한 걸음 더 나아가 여러분과 함께합니다.

  • Termux에 대해 알아보기:API
  • Python과 nano를 설치하고 "Hello, world!"라고 작성합니다. 파이썬에서
  • bash 스크립트에 대해 알아보고 Termux:API를 사용하여 스크립트 작성
  • bash 스크립트, Termux:API 및 Python을 사용하여 간단한 프로그램을 작성합니다.

이제 입력 명령이 무엇을 하는지 이해했으므로 다음 단계부터는 각 동작에 대해 자세히 설명하지 않고 어려운 부분이 있으면 확실히 설명하겠습니다.

별칭을 많이 사용하므로 이 부분에서 사용된 약어는 다음과 같습니다.

alias updg='apt update && apt upgrade'
alias py='python'

계획이 준비되었습니다. 시작할 수 있습니다! 물론 "매직 탭"(1부 참조).

4 단계

Termux:API Rabbit Hole 자세히 알아보기

코더의 마음을 위해 이 단어에 얼마나 많이 병합되었는지 API

Termux: API에 대한 주제를 다루지 않으면 첫 번째 부분에 대한 설명에서 올바르게 언급된 것처럼 "Linux for Dummies"와 같은 일부 브로셔를 간단히 다시 말하는 것으로 모든 단계를 줄일 수 있습니다.

먼저 Google Play Market에서 Termux:API를 설치합니다(나중에 Termux를 다시 시작해도 문제가 되지 않음).

단계별 Termux(2부)

다음으로 Termux 콘솔에 API 패키지를 설치해야 합니다.

updg # Не забываем про alias’ы
apt install termux-api

실험을 위해 Android 5.1.1을 사용하고 있습니다. Android 7 소유자의 경우 '설정' > '보호된 앱'으로 이동하여 Termux: API를 "보호"해야 합니다. 그렇지 않으면 API 호출은 다음과 같습니다. termux-battery-status, 중단됩니다. (센티미터. 프로젝트 위키)

이제 획득한 기회를 자세히 살펴볼 가치가 있습니다. Termux:API에 대한 가장 자세한 최신 설명은 다음에서 찾을 수 있습니다. 프로젝트 위키. 앞으로 독립 작업을 위해 손을 채울 수있는 가장 시각적이고 흥미로운 것을 선택하려고 노력할 것입니다.

일부 Termux:API 예제

  • termux-배터리 상태
    배터리 상태를 반환합니다.
    단계별 Termux(2부)
  • termux-밝기
    0에서 255까지 화면의 밝기를 설정합니다.
    단계별 Termux(2부)
  • termux 토스트
    임시 토스트 알림 표시
    단계별 Termux(2부)
  • termux 토치
    손전등 포함
    단계별 Termux(2부)
  • termux-wifi-scaninfo
    Wi-Fi 네트워크의 마지막 스캔에 대한 정보를 반환합니다.
    단계별 Termux(2부)

반환 값이 문자열, 사전, 사전 목록, 일반적으로 Python이 잘 작동하는 데이터 유형임을 쉽게 알 수 있으므로 다음 단계는 설정하는 것입니다.

5 단계

Python 및 nano 설치

Python을 설치하려면 터미널에 다음과 같이 작성하십시오.

updg
apt install python
apt install python2

이제 2개와 3개의 Python이 설치되었습니다.

기사를 작성하는 동안 vim보다 마음에 드는 또 다른 나노 텍스트 편집기를 발견했습니다. 설치해 보겠습니다.

apt install nano

vim보다 사용하기 쉽고 nano는 더 사용자 친화적인 인터페이스를 제공합니다. Android 기기에서는 vim이 여전히 더 편리합니다.

Termux에서 Python의 HelloWorld

대체로 이 항목 없이도 가능했지만 Python을 Termux에 넣고 HelloWorld를 작성하지 않는 것은 나쁜 매너라고 생각합니다.

나는 누구에게도 Python을 가르치는 목표를 설정하지 않았기 때문에 모르는 사람은 단순히 코드를 복사하거나 (또는 ​​충분한 문헌이 있기 때문에 스스로 학습을 시작할 수 있음) 아는 사람은 스스로 무언가를 만들 수 있습니다. 그리고 여전히 편집기 없이 터미널에 텍스트를 입력하는 방법을 보여드리겠습니다.

cat >hello-world.py     
# Если не указывать источник (напоминаю cat 1.txt > 2.txt)
# то cat будет брать данные из стандартного потока ввода,
# проще говоря вводимое с клавиатуры.

str = ‘Hello, world!’ # присваиваем переменной str значение "Hello, world!"
print (str) # выводим на экран значение из переменной str

# Ctrl + D закончить ввод и записать файл (hello-world.py)

py hello-world.py # запускаем файл (py это alias от python)

단계별 Termux(2부)

입력 과정에서 오류를 발견하지 못하고 이미 Enter 키를 누른 경우 위 줄로 이동할 수 없습니다. 이렇게 하려면 Ctrl + D를 눌러 입력을 종료합니다(일반적으로 Ctrl + Z) 처음부터 모든 것을 반복합니다. '>'를 사용했기 때문에 파일을 완전히 덮어씁니다. 따라서 오류 없이 즉시 코드를 작성할 수 있다는 확신이 없다면 이 입력 방법을 사용하지 않는 것이 좋습니다.

6 단계

배쉬 스크립트

Bash 스크립트는 터미널 작업을 자동화하는 좋은 방법입니다. 스크립트는 .sh 확장자(확장자는 선택 사항)가 있는 파일로, 일부는 이미 연구한 터미널 명령 집합이 포함되어 있습니다. 여기 대부분의 명령 목록, 모든 것이 작동해야 하지만 이것은 Termux가 아니라 "성인용" Linux에 대한 목록이라는 점에 유의하십시오. bash 스크립트에 대한 훌륭한 자료.

스크립트를 사용하면 거의 모든 단조로운 작업을 자동화할 수 있습니다. 그가 만든 변수의 값을 표시하는 가장 간단한 bash 스크립트를 작성해 보겠습니다. cat을 다시 사용하고 일반 텍스트 편집기를 사용할 수 있으며 특히 자신을 훈련하려는 사용자는 echo를 사용할 수 있습니다.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

단계별 Termux(2부)

Termux:API를 사용하는 Bash 스크립트

악명 높은 HelloWorlds와 다르지만 쓸모없는 것을 작성해 봅시다. 스크립트는 다음과 같습니다.

  1. termux-battery-status API 요청 실행
  2. 받은 데이터를 test.txt 파일에 저장
  3. 파일에서 화면으로 데이터 출력
  4. 이전에 작성된 hello-world.py 프로그램을 실행합니다.
  5. 프로그램에서 받은 데이터를 test.txt 파일에 씁니다.
  6. 파일에서 화면으로 데이터 출력
  7. 파일에서 클립보드로 데이터 이동
  8. 클립보드의 내용 표시
  9. 클립보드의 데이터와 함께 팝업 메시지 표시

먼저 작업용 폴더를 만들고 거기에 hello-world.py를 test.py로 복사하고 이 폴더에 test.sh 및 test.txt 파일을 만듭니다.

mkdir bashscript

cat hello-world.py >> bashscript/test.py

cd bashscript/

touch test.sh test.txt # touch создает файлы

chmod +x test.sh

이제 편리한 방법으로 test.sh 파일에 스크립트를 작성합니다.

#!/bin/bash

# В начале каждого скрипта принято ставить #! (называется шебанг)
# после идет указание на шелл для которой написан скрипт

clear # очистим окно терминала

termux-battery-status > test.txt # пункты 1 и 2 из намеченного функционала

cat test.txt # пункт 3

python test.py > test.txt # пункт 4 и 5

cat test.txt # пункт 6

cat test.txt | termux-clipboard-set # пункт 7
# | это конвейер. переносит данные с выхода одного потока на вход другого

termux-clipboard-get # пункт 8

termux-clipboard-get | termux-toast # пункт 9

이제 bashscript 폴더에 있는 상태에서 작성합니다. ./test.sh Android 기기의 터미널에서 관찰합니다.

단계별 Termux(2부)

그래서 우리는 계획된 bash 스크립트를 작성했습니다. 에코를 사용하여 각 작업 실행에 대한 정보 콘솔에 대한 출력으로 희석할 수 있습니다. 독자를 위해 남겨두겠습니다.

7 단계

유용한 일을 해보자

비교적 유용함

참조 조건을 공식화합시다
실행 후 응용 프로그램은 클립보드의 파일에서 임의의 줄을 배치하고 팝업 메시지로 이를 알려야 합니다.

bash 스크립트를 기본으로 삼고 Python 서브루틴을 사용하여 파일에서 임의의 줄을 추출합니다. 스크립트 작업 계획을 세우자:

  1. 서브루틴 실행
  2. 서브루틴의 결과를 클립보드로 전송
  3. 팝업 메시지 표시

디렉토리 및 애플리케이션 파일의 이름을 정의해 보겠습니다.

  • 홈 디렉토리의 rndstr 폴더
    • 소스 - 라인을 가져올 파일
    • rndstr.py - 소스 파일에서 콘솔로 임의 라인을 표시하는 서브루틴
    • rndstr.sh - 스크립트 파일

애플리케이션 디렉토리를 생성하고 이동하여 파일을 생성합니다.

스크립트 계획의 처음 두 지점은 결과적으로 Termux: API를 사용하여 파이프라인으로 결합할 수 있습니다.

#!/bin/bash

python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы

termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"

소스 파일에서 논리적으로 구분된 텍스트를 줄로 나눌 수 있습니다. 격언을 넣기로 결정했습니다.

소스 파일 목록

Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон

소스 파일에서 임의의 문자열을 추출하는 서브루틴을 생성하기만 하면 됩니다.
서브루틴의 알고리즘을 작성해 봅시다.

  1. 오픈 소스 파일
  2. 열린 파일의 줄 수 계산
  3. 파일을 닫습니다(여분의 시간 동안 열어 둘 수 있는 항목이 없음).
  4. 소스 파일의 줄 수 내에서 임의의 정수를 생성합니다.
  5. 오픈 소스 파일
  6. 생성된 숫자 아래에 라인을 출력합니다.
  7. 파일 닫기

Python으로 알고리즘을 구현합니다(Python 3.7에서 작성).

import random  #  импортируем для генерации случайных чисел
import os  #  для получения пути

path = os.path.abspath(__file__)  #  получаем прямой путь до файла rndstr.py
path = os.path.dirname(path)  #  преобразуем в путь до директории
path = path  + '/source'  #  преобразуем в путь до файла source

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f: i+=1  #  считаем строки файла
f.close  #  закрываем файл

j = int(round(i * random.random()))  #  генерируем целое случайное число от 0 до i

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f:  #  перебираем строки из файла
    if i == j:  #  если счетчик строк равен сгенерированному числу
        print (str, end='')  #  выводим строку без перехода на новую
        break  #  выходим из цикла
    i+=1  #  увеличиваем счетчик на 1
f.close  #  закрываем файл

파일을 생성하고 쓴 후 파일 실행 권한을 부여해야 합니다. rndstr.sh, 빠른 실행을 위한 별칭을 만듭니다.

alias rnst="~/rndstr/rndstr.sh"

이제 터미널에 입력 rnst 예를 들어 서신에 사용할 수있는 클립 보드에 임의의 격언이 표시됩니다.

여기서 우리는 적어도 유용한 것을 작성했습니다. 비교적 유용합니다.

추신

마지막 단계에서는 의도적으로 스크린샷을 제공하지 않았으며 일부 동작을 자세히 분석하지 않고 독자가 스스로 작업할 수 있도록 파일의 내용만 작성했습니다.

이 "Termux 단계별"에서 마무리할 가치가 있다고 생각합니다. 물론 이것은 첫 번째 단계에 불과하지만 이제 스스로 앞으로 나아갈 수 있습니다.

처음에는 이 주기에서 nmap, sqlmap을 사용하는 방법을 보여줄 계획이었지만 저 없이도 이미 이 주제에 대한 많은 기사가 있습니다. "Termux 단계별" 주기를 계속하고 싶다면 아래에 설문 조사가 있으며 의견에 추가로 쓸 내용을 제안할 수 있습니다.

등록된 사용자만 설문 조사에 참여할 수 있습니다. 로그인제발

"Termux 단계별"를 계속하시겠습니까?

  • Да

  • 아니

2명의 사용자가 투표했습니다. 기권이 없습니다.

출처 : habr.com

코멘트를 추가