Termux 一步一步(第 2 部分)

В 最后部分 我们熟悉了 Termux 的基本命令,设置了与 PC 的 SSH 连接,学习了如何创建别名并安装了几个有用的实用程序。 这次我们必须更进一步,我们与您同在:

  • 了解 Termux:API
  • 安装Python和nano,并写入“Hello, world!” 在Python中
  • 了解 bash 脚本并使用 Termux:API 编写脚本
  • 使用 bash 脚本、Termux:API 和 Python,我们将编写一个简单的程序

既然我们现在了解了输入命令的作用,那么从下一步开始我不会那么详细地描述每个动作,但是哪里可能有困难,我一定会解释。

我经常使用别名,因此这部分中使用的缩写如下所示:

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

计划已经准备好了,可以开始了! 当然,不要忘记“神奇标签”(参见第 1 部分).

步骤4

深入了解 Termux:API 兔子洞

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-吐司
    显示临时 Toast 通知
    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 更喜欢的 nano 文本编辑器,让我们安装它:

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 脚本

Bash 脚本是自动化终端工作的好方法。 该脚本是一个扩展名为 .sh 的文件(扩展名是可选的),其中包含一组终端命令,其中一些命令我们已经研究过。 这里 大多数命令的列表,一切都应该可以工作,但请注意,这是“成人”Linux 的列表,而不是 Termux,而只是 有关 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 脚本

让我们写一些与臭名昭著的 HelloWorld 不同的东西,但同样没用。 我们的脚本将是:

  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 脚本。 您可以通过将每个操作的执行信息输出到控制台(使用 echo)来稀释它,我将把它留给读者。

步骤7

让我们做一些有用的事情

比较有用

让我们制定职权范围
启动后,应用程序应将文件中的随机行放置到剪贴板上,并通过弹出消息进行通知。

我们将以 bash 脚本为基础,使用 Python 子例程从文件中提取随机行。 让我们制定一个脚本工作计划:

  1. 运行子程序
  2. 将子程序的结果传输到剪贴板
  3. 显示弹出消息

让我们定义目录和应用程序文件的名称:

  • 主目录中的 rndstr 文件夹
    • source - 我们将从中获取行的文件
    • 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

添加评论