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,所以那些不懂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 我們會在剪貼板上得到一條隨機的格言,例如,它可以在通信中使用。

在這裡我們至少寫了一些有用的東西。 比較有用。

PS

最後一步,我故意不提供截圖,也沒有詳細分析一些動作,只寫出文件內容,以便讀者有機會自己動手。

關於這個《Termux一步一步》,我覺得還是值得讀完的。 當然,這些只是第一步,但現在您可以自己繼續前進。

最初,我計劃在這個週期中展示如何使用 nmap、sqlmap,但沒有我,已經有很多關於這個主題的文章了。 如果您希望我繼續“Termux 一步一步”循環,那麼下面有一項調查,您可以在評論中提出其他要寫的內容。

只有註冊用戶才能參與調查。 登入, 請。

繼續“Termux 一步一步”嗎?

  • Да

  • 沒有

2 位用戶投票。 沒有棄權票。

來源: www.habr.com

添加評論