Termux passo a passo (Parte 2)

Em parte anterior nesta parte, nos familiarizamos com os comandos básicos do Termux, configuramos uma conexão SSH com o PC, aprendemos a criar alias e instalamos algumas utilidades úteis. Desta vez, daremos mais um passo em frente, e iremos:

  • aprender sobre Termux:API
  • instalar Python e nano, e também escrever "Hello, world!" em Python
  • aprender sobre scripts bash e escrever um script utilizando Termux:API
  • usando um script bash, Termux:API e Python, escreveremos um programa simples

Agora que entendemos o que os comandos inseridos fazem, a partir deste passo, não explicarei cada ação em detalhes, mas onde houver dúvidas, eu explicarei com certeza.

Eu costumo usar aliases, por isso os que serão utilizados nesta parte estão aqui:

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

O plano está pronto, vamos começar! E, claro, não se esqueça do "mágico Tab" (Ver Parte 1).

Passo 4

Mergulhando na toca do coelho Termux:API

API, quão profundo é este termo para o coração de um programador

Se não considerarmos o tema Termux:API, todos os nossos passos poderiam ser resumidos a um simples resumo de algum folheto como "Linux para leigos", como foi corretamente apontado nos comentários da primeira parte.

Para começar, vamos instalar o Termux:API da Google Play Store (depois não se esqueça de reiniciar o Termux):

Termux passo a passo (Parte 2)

A seguir, precisamos instalar o pacote API no console do Termux:

updg # Não se esqueça dos aliases
apt install termux-api

Para experimentos, estou usando Android 5.1.1; os proprietários do Android 7 precisam "proteger" o Termux: API, indo em 'Configurações' > 'Aplicativos protegidos', caso contrário, chamadas de API, como termux-battery-status, ficarão travadas. (Veja wiki do projeto)

Agora é hora de nos familiarizarmos mais de perto com as novas funcionalidades adquiridas. A descrição mais recente e detalhada do Termux:API pode ser encontrada em wiki do projeto. Tentarei selecionar as partes mais ilustrativas e interessantes, que permitirão adquirir prática para trabalhos independentes no futuro.

Alguns exemplos do Termux:API

  • termux-battery-status
    Retorna o estado da bateria
    Termux passo a passo (Parte 2)
  • termux-brightness
    Define o brilho da tela de 0 a 255
    Termux passo a passo (Parte 2)
  • termux-toast
    Mostra uma notificação temporária
    Termux passo a passo (Parte 2)
  • termux-torch
    Liga a lanterna
    Termux passo a passo (Parte 2)
  • termux-wifi-scaninfo
    Retorna informações sobre a última varredura das redes Wi-Fi
    Termux passo a passo (Parte 2)

Não é difícil perceber que os valores retornados são strings, dicionários, listas de dicionários, ou seja, tipos de dados com os quais o Python trabalha muito bem, portanto, o próximo passo é instalá-lo.

Passo 5

Instalaremos Python e nano

Para instalar o Python, digite no terminal:

updg
apt install python
apt install python2

Agora temos o Python 2 e 3 instalados.

Durante o trabalho neste artigo, descobri outro editor de texto, o nano, que me agradou 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.

Hello World em Python no Termux

Em grande parte, poderíamos ter pulado este ponto, mas instalar o Python no Termux e não escrever um Hello World, na minha opinião, é inaceitável.

Não estou interessado em ensinar a ninguém Python, então aqueles que não sabem podem simplesmente copiar o código (ou começar a estudar sozinhos, já que há muita literatura disponível), e aqueles que já sabem podem criar algo por conta própria. E eu, ‘aproveitando a deixa’, ainda mostrarei uma maneira de inserir texto no terminal sem um editor.

cat >hello-world.py     
# Se não especificar a fonte (lembro que cat 1.txt > 2.txt)
# o cat pegará dados do fluxo de entrada padrão,
# em outras palavras, do que é digitado no teclado.

str = 'Hello, world!' # atribuimos à variável str o valor "Hello, world!"
print (str) # exibimos no console o valor da variável str

# Ctrl + D para finalizar a entrada e gravar o arquivo (hello-world.py)

py hello-world.py # executamos o arquivo (py é um alias para python)

Termux passo a passo (Parte 2)

Se durante a entrada você não notar um erro e já pressionar Enter, não poderá voltar para a linha anterior, para isso finalize a entrada pressionando Ctrl + D (pode até cancelar com Ctrl + Z) e repita tudo do começo. Como usamos ‘>’, o arquivo será completamente sobrescrito. Por essa razão, não recomendo usar esse método de entrada se você não tiver certeza de que escreverá o código de uma só vez, sem erros.

Passo 6

Scripts Bash

Scripts Bash são uma ótima maneira de automatizar o trabalho com o terminal. Um script é um arquivo com a extensão .sh (a extensão não é obrigatória) que contém um conjunto de comandos do terminal, alguns dos quais já estudamos. Aqui está uma lista da maioria dos comandos, tudo deve funcionar, mas preste atenção, este é um lista para um Linux ‘adulto’, e não para o Termux, e aqui está um material incrível sobre scripts bash.

Com scripts, é possível automatizar praticamente todas as ações monótonas. Vamos escrever um simples script bash que exibe o valor de uma variável criada por ele mesmo; usarei o cat, mas você pode usar um editor de texto normal, e aqueles que desejam treinar podem usar o echo.

cat >test.sh

export str="Olá, Habr!"
# export cria a variável str
# e atribui a ela o valor "Olá, Habr!"
# Não coloque espaços antes e depois de ‘=’

echo $str # Para acessar variáveis, coloca-se ‘$’ antes delas

# Ctrl + D

# ./test.sh para executar o script, mas se você fizer isso agora, haverá um erro
# para evitar o erro, é preciso tornar o arquivo test.sh executável

chmod +x test.sh
# chmod altera as permissões (+ adicionar / - remover)
# ‘+x’ significa que estamos tornando o arquivo executável

./test.sh # Executamos nosso script

Termux passo a passo (Parte 2)

Script Bash com Termux:API

Vamos escrever algo que se distinga dos clichês de HelloWorld, mas que seja igualmente inútil. Nosso script irá:

  1. executar a solicitação API termux-battery-status
  2. salvar os dados obtidos no arquivo test.txt
  3. exibir os dados do arquivo na tela
  4. executar o programa hello-world.py que foi escrito anteriormente
  5. salvar os dados do programa no arquivo test.txt
  6. exibir os dados do arquivo na tela
  7. copiar os dados do arquivo para a área de transferência
  8. exibir o conteúdo da área de transferência na tela
  9. mostrar uma mensagem pop-up com os dados da área de transferência

Primeiro, vamos criar uma pasta para trabalhar e copiar hello-world.py para lá como test.py, em seguida, vamos criar os arquivos test.sh e test.txt nessa pasta:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch cria arquivos

chmod +x test.sh

Agora, de qualquer forma conveniente, vamos gravar 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)

Finalmente, escrevemos o script bash planejado. Podemos adicionar à sua saída informações sobre a execução de cada ação (usando echo), deixo isso para os leitores.

Passo 7

Vamos fazer algo útil

Relativamente útil

Vamos formular as especificações
O aplicativo deve, após o lançamento, colocar uma string aleatória de um arquivo na área de transferência e notificar sobre isso com uma mensagem pop-up.

Vamos usar um script bash como base e vamos extrair uma string aleatória de um arquivo usando um subprograma em Python. Vamos elaborar um plano de trabalho para o script:

  1. Executar o subprograma
  2. Copiar o resultado da sub-rotina para a área de transferência
  3. Mostrar uma mensagem pop-up

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

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

Criamos o diretório do aplicativo e, ao nos movermos para ele, criamos os arquivos lá.

Os dois primeiros itens do plano do script podem ser combinados em um pipeline, assim, usando Termux:API, obtemos:

#!/bin/bash

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

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

No arquivo source, você pode colocar qualquer texto logicamente dividido em linhas; decidi inserir aforismos:

Listagem do arquivo source

A sinceridade não é a verdade. L. Lavelle
Suporte e abstenha-se. Epicteto
Só é nobre o que é desinteressado. J. La Bruyère
Seja cautelosamente corajoso. B. Gracián
A bondade é melhor do que a beleza. H. Heine
Para grandes feitos, é necessário um inconformado persistência. F. Voltaire
Se você quer agradar sempre, sirva a si mesmo. B. Franklin
A excessiva modéstia não é nada além de orgulho oculto. A. Chenier
Pessoas muito inteligentes começam a não ser confiáveis quando mostram embaraço. F. Nietzsche
A pobreza indica a falta de recursos, não a falta de nobreza. D. Boccaccio
É preciso ter cuidado para não levar a modéstia ao ponto de humilhação. A. Bakihanov
Quem renuncia a muito, pode se permitir muito. J. Chardon
Quando somos pagos por um ato nobre, ele nos é tirado. N. Chamfort
Não conseguir nada não é terrível, mas perder o que se conseguiu é decepcionante. Cláudio Eliano
É mais fácil suportar pacientemente o que não podemos corrigir. Horácio
Você se cansa de esperar, mas o que seria pior é se não houvesse nada para esperar. B. Shaw
Tudo chega a seu tempo, se as pessoas sabem esperar. F. Rabelais
Com nossa paciência, podemos alcançar mais do que com a força. E. Burke
É preciso saber suportar o que não se pode evitar. M. Montaigne
Quem é corajoso nos negócios, não teme as palavras. Sófocles
Eu não gosto de lutar, eu gosto de vencer. B. Shaw
Um gato acuado e encurralado se transforma em tigre. M. Cervantes
Uma pessoa digna não segue os passos de outras. Confúcio
Uma grande mente mostrará sua força não apenas na capacidade de pensar, mas também na de viver. R. Emerson
A fama é uma mercadoria pouco vantajosa. Custa caro e se conserva mal. O. Balzac
Moderação e adequação nas conversas valem mais do que a eloquência. F. Bacon
Quem não sabe calar, também não sabe falar. Sêneca, o Jovem
Boas maneiras consistem em pequenas renúncias. F. Chesterfield
Um bom homem não é aquele que sabe fazer o bem, mas aquele que não sabe fazer o mal. V. Kliuchevsky
Não emita juízos irrevogáveis! Agostinho
Nada demais! Solon

Ainda precisamos criar um subprograma que extraia uma linha aleatória do arquivo source.
Vamos descrever o algoritmo de funcionamento do subprograma:

  1. Abrimos o arquivo source
  2. Contamos o número de linhas no arquivo aberto
  3. Fechamos o arquivo (não faz sentido deixá-lo aberto desnecessariamente)
  4. Geramos um número inteiro aleatório dentro do número de linhas do arquivo source
  5. Abrimos o arquivo source
  6. Exibimos a linha correspondente ao número gerado
  7. Fechamos o arquivo

Implementamos o algoritmo em Python (estou escrevendo para Python 3.7):

import random  # importamos para gerar números aleatórios
import os  # para obter o caminho

path = os.path.abspath(__file__)  # obtemos o caminho direto até o arquivo rndstr.py
path = os.path.dirname(path)  # transformamos no caminho até o diretório
path = path  + 'source'  # transformamos no caminho até o arquivo source

f = open(path)  # abrimos o arquivo
i = 0  # zeramos o contador
for str in f: i+=1  # contamos as linhas do arquivo
f.close  # fechamos o arquivo

j = int(round(i * random.random()))  # geramos um número inteiro aleatório de 0 a i

f = open(path)  # abrimos o arquivo
i = 0  # zeramos o contador
for str in f:  # percorremos as linhas do arquivo
    if i == j:  # se o contador de linhas for igual ao número gerado
        print(str, end='')  # exibimos a linha sem pular linha
        break  # saímos do loop
    i+=1  # aumentamos o contador em 1
f.close  # fechamos o arquivo

Após os arquivos serem criados e gravados, é necessário conceder permissões de execução ao arquivo rndstr.sh, e criar um alias para um acesso rápido.

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

Agora, ao digitar no terminal rnst teremos um aforismo aleatório na área de transferência, que, por exemplo, pode ser usado em conversas.

Assim, escrevemos algo útil. Relativamente útil.

P.S.

Propositalmente, no último passo não coloquei capturas de tela e não detalhei algumas ações, apenas descrevi o conteúdo dos arquivos, para que os leitores pudessem trabalhar por conta própria.

Com isso, o “Termux passo a passo” deve chegar ao fim. Claro que estes são apenas os primeiros passos, mas agora vocês podem seguir em frente sozinhos.

Inicialmente, eu planejava mostrar neste ciclo como usar nmap, sqlmap, mas já existem muitos artigos sobre isso sem mim. Se houver interesse em que eu continue a série “Termux passo a passo”, há uma pesquisa abaixo e nos comentários vocês podem sugerir sobre o que mais escrever.

Apenas usuários registrados podem participar da pesquisa. Entre, por favor.

Continuar com “Termux passo a passo”?

  • Sim

  • Não

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

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster