Termux passo a passo (Parte 2)

В última parte conhecemos os comandos básicos do Termux, configuramos uma conexão SSH com um PC, aprendemos a criar alias's e instalamos vários utilitários úteis. Desta vez temos que ir ainda mais longe, estamos com você:

  • conheça o Termux:API
  • instale o Python e o nano e escreva "Hello, world!" em Python
  • aprenda sobre scripts bash e escreva um script usando Termux:API
  • usando um script bash, Termux:API e Python, escreveremos um programa simples

Como agora entendemos o que os comandos de entrada fazem, a partir da próxima etapa não descreverei cada ação com tantos detalhes, mas onde pode haver dificuldades, com certeza explicarei.

Eu uso muito pseudônimos, então as abreviações usadas nesta parte são mostradas aqui:

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

O plano está pronto, você pode começar! E, claro, não se esqueça da "guia mágica" (Ver Parte 1).

Passo 4

Mergulhando no Termux:API Rabbit Hole

API quanto se fundiu nesta palavra para o coração do codificador

Se não tocarmos no tema Termux: API, então todas as nossas etapas podem ser reduzidas a uma simples recontagem de algum folheto como "Linux for Dummies", como foi corretamente observado nos comentários da primeira parte.

Primeiro, instale o Termux:API do Google Play Market (não custa reiniciar o Termux depois):

Termux passo a passo (Parte 2)

Em seguida, precisamos instalar o pacote da API no console do Termux:

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

Para experimentação, estou usando o Android 5.1.1, para Android 7, os proprietários precisam "proteger" Termux: API acessando 'Configurações' > 'Aplicativos protegidos', caso contrário, chamadas de API como termux-battery-status, vai travar. (Cm. wiki do projeto)

Agora vale a pena dar uma olhada nas oportunidades adquiridas. A descrição mais recente e detalhada do Termux:API pode ser encontrada em wiki do projeto. Vou tentar escolher o mais visual e interessante, o que me permitirá encher a mão para trabalhos independentes no futuro.

Alguns exemplos de Termux:API

  • termux-bateria-status
    Retorna o estado da bateria
    Termux passo a passo (Parte 2)
  • termux-brilho
    Define o brilho da tela de 0 a 255
    Termux passo a passo (Parte 2)
  • torrada termux
    Mostra uma notificação temporária do sistema
    Termux passo a passo (Parte 2)
  • termux-tocha
    Inclui lanterna
    Termux passo a passo (Parte 2)
  • termux-wifi-scaninfo
    Retorna informações sobre a última varredura de redes Wi-Fi
    Termux passo a passo (Parte 2)

É fácil ver que os valores de retorno são strings, dicionários, listas de dicionários, em geral, tipos de dados com os quais o Python trabalha muito bem, então o próximo passo é configurá-lo.

Passo 5

Instale o Python e o nano

Para instalar o Python, escreva no terminal:

updg
apt install python
apt install python2

Agora temos 2 e 3 Python instalados.

Enquanto trabalhava no artigo, descobri outro editor de texto nano que gostei mais do que o vim, vamos instalá-lo:

apt install nano

É mais fácil de usar do que o vim e o nano tem uma interface mais amigável. Em um dispositivo Android, o vim ainda é mais conveniente.

HelloWorld em Python no Termux

De modo geral, dava para ficar sem esse item, mas colocar Python no Termux e não escrever HelloWorld, na minha opinião, é falta de educação.

Não me proponho a ensinar Python a ninguém, então quem não sabe pode simplesmente copiar o código (ou começar a aprender por conta própria, já que há literatura suficiente), e quem sabe pode fazer algo sozinho. E ainda mostrarei "sob o disfarce" uma maneira de inserir texto no terminal sem um editor.

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 passo a passo (Parte 2)

Se você não percebeu um erro durante o processo de entrada e já pressionou Enter, não poderá ir para a linha acima, para fazer isso, finalize a entrada pressionando Ctrl + D (geralmente você pode interromper Ctrl + Z) e repita tudo desde o início. Como usamos '>', o arquivo será completamente substituído. Por esse motivo, não recomendo usar esse método de entrada, a menos que você tenha certeza de que escreverá o código imediatamente sem erros.

Passo 6

scripts bash

Os scripts Bash são uma ótima maneira de automatizar o trabalho do seu terminal. O script é um arquivo com a extensão .sh (a extensão é opcional) contendo um conjunto de comandos de terminal, alguns dos quais já estudamos. Aqui lista da maioria dos comandos, tudo deve funcionar, mas observe que esta é uma lista para Linux "adulto", não Termux, mas apenas ótimo material sobre scripts bash.

Com a ajuda de scripts, você pode automatizar quase todas as ações monótonas. Vamos escrever o script bash mais simples que mostre o valor da variável que ele criou, vou usar cat novamente, você pode usar um editor de texto normal, e aqueles que querem se treinar especialmente podem usar 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 passo a passo (Parte 2)

Script Bash com Termux:API

Vamos escrever algo diferente do notório HelloWorlds, mas igualmente inútil. Nosso roteiro será:

  1. execute a solicitação de API termux-battery-status
  2. salve os dados recebidos no arquivo test.txt
  3. imprimir dados de um arquivo para a tela
  4. execute o programa hello-world.py escrito anteriormente
  5. gravar os dados recebidos do programa no arquivo test.txt
  6. imprimir dados de um arquivo para a tela
  7. mover dados do arquivo para a área de transferência
  8. exibir o conteúdo da área de transferência
  9. exibir uma mensagem pop-up com dados da área de transferência

Primeiro, crie uma pasta para o trabalho e copie hello-world.py lá como test.py, crie os arquivos test.sh e test.txt nesta pasta:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Agora, de qualquer maneira conveniente, escreva o script no arquivo 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

Agora, estando na pasta bashscript, escrevemos ./test.sh observamos no terminal do dispositivo Android:

Termux passo a passo (Parte 2)

Então escrevemos o script bash planejado. Você pode diluí-lo com a saída para o console de informações sobre a execução de cada ação (usando echo), deixarei isso para os leitores.

Passo 7

Vamos fazer algo útil

relativamente útil

Vamos formular os termos de referência
Após o lançamento, o aplicativo deve colocar uma linha aleatória do arquivo na área de transferência e notificá-lo com uma mensagem pop-up.

Tomaremos como base um script bash, extrairemos uma linha aleatória de um arquivo usando uma sub-rotina Python. Vamos fazer um plano de trabalho do script:

  1. Executar sub-rotina
  2. Transferir o resultado da sub-rotina para a área de transferência
  3. Exibir mensagem pop-up

Vamos definir os nomes do diretório e dos arquivos do aplicativo:

  • pasta rndstr no diretório inicial
    • source - o arquivo do qual tiraremos as linhas
    • rndstr.py - uma sub-rotina que exibe uma linha aleatória do arquivo de origem para o console
    • rndstr.sh - arquivo de script

Crie um diretório de aplicativos e vá até ele e crie arquivos lá.

Os dois primeiros pontos do plano de script podem ser combinados por um pipeline, como resultado, usando Termux: API, obtemos:

#!/bin/bash

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

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

No arquivo de origem, você pode colocar qualquer texto logicamente dividido em linhas, resolvi colocar aforismos:

Listagem de arquivos de origem

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

Precisamos apenas criar uma sub-rotina que extraia uma string aleatória do arquivo de origem.
Vamos escrever o algoritmo da sub-rotina:

  1. Arquivo de código aberto
  2. Contando o número de linhas em um arquivo aberto
  3. Feche o arquivo (não há nada para mantê-lo aberto por mais tempo)
  4. Geramos um inteiro aleatório dentro do número de linhas do arquivo fonte
  5. Arquivo de código aberto
  6. Nós emitimos uma linha sob o número do número gerado
  7. Fechando o arquivo

Implementamos o algoritmo em Python (escrevo em 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  #  закрываем файл

Depois que os arquivos são criados e gravados, você precisa conceder as permissões de execução do arquivo rndstr.she crie um alias para inicialização rápida.

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

Agora digitando no terminal rnst obteremos um aforismo aleatório na área de transferência, que, por exemplo, pode ser usado na correspondência.

Aqui escrevemos pelo menos algo útil. Relativamente útil.

Ps

Na última etapa, intencionalmente não forneci capturas de tela e não analisei detalhadamente algumas das ações, escrevendo apenas o conteúdo dos arquivos para que os leitores tenham a oportunidade de trabalhar por conta própria.

Nesse "passo a passo do Termux", acho que vale a pena terminar. Claro, esses são apenas os primeiros passos, mas agora você mesmo pode avançar.

Inicialmente, planejei mostrar neste ciclo como usar nmap, sqlmap, mas sem mim já existem muitos artigos sobre esse assunto. Se você quiser que eu continue o ciclo “Termux passo a passo”, então há uma pesquisa abaixo e nos comentários você pode sugerir o que mais escrever.

Apenas usuários registrados podem participar da pesquisa. Entrarpor favor

Continuar "Termux passo a passo"?

  • Sim

  • Não

2 usuários votaram. Não há abstenções.

Fonte: habr.com

Adicionar um comentário