ترموکس گام به گام (قسمت اول)

В آخرین قطعه ما با دستورات اولیه Termux آشنا شدیم، اتصال SSH را به رایانه شخصی راه اندازی کردیم، نحوه ایجاد نام مستعار را یاد گرفتیم و چندین ابزار مفید را نصب کردیم. این بار باید پا را فراتر بگذاریم، با شما هستیم:

  • با Termux:API آشنا شوید
  • پایتون و نانو را نصب کنید و بنویسید "سلام، دنیا!" در پایتون
  • درباره اسکریپت های 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" خلاصه شود، همانطور که به درستی در نظرات قسمت اول ذکر شد.

ابتدا Termux:API را از Google Play Market نصب کنید (راه اندازی مجدد Termux بعد از آن ضرری ندارد):

ترموکس گام به گام (قسمت اول)

در مرحله بعد، باید بسته API را در کنسول Termux نصب کنیم:

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

برای آزمایش، من از Android 5.1.1 استفاده می‌کنم، برای دارندگان Android 7 باید با رفتن به «تنظیمات» > «برنامه‌های محافظت‌شده» از Termux: API محافظت کنند، در غیر این صورت API مانند termux-battery-status، آویزان خواهد شد. (سانتی متر. ویکی پروژه)

اکنون ارزش دارد که به فرصت های به دست آمده نگاهی دقیق بیندازیم. آخرین و دقیق‌ترین توضیحات Termux:API را می‌توانید در اینجا بیابید ویکی پروژه. سعی می کنم بصری ترین و جالب ترین را انتخاب کنم که به من امکان می دهد در آینده دستم را برای کار مستقل پر کنم.

چند نمونه Termux:API

  • termux-battery-status
    وضعیت باتری را برمی گرداند
    ترموکس گام به گام (قسمت اول)
  • روشنایی termux
    روشنایی صفحه را از 0 تا 255 تنظیم می کند
    ترموکس گام به گام (قسمت اول)
  • نان تست termux
    یک اعلان نان تست موقت را نشان می دهد
    ترموکس گام به گام (قسمت اول)
  • مشعل termux
    شامل چراغ قوه
    ترموکس گام به گام (قسمت اول)
  • termux-wifi-scaninfo
    اطلاعات مربوط به آخرین اسکن شبکه های Wi-Fi را برمی گرداند
    ترموکس گام به گام (قسمت اول)

به راحتی می توان فهمید که مقادیر بازگشتی رشته ها، فرهنگ لغت ها، لیست دیکشنری ها، به طور کلی انواع داده هایی هستند که پایتون با آنها عالی کار می کند، بنابراین مرحله بعدی تنظیم آن است.

مرحله 5

پایتون و نانو را نصب کنید

برای نصب پایتون در ترمینال بنویسید:

updg
apt install python
apt install python2

ما اکنون 2 و 3 پایتون را نصب کرده ایم.

در حین کار روی مقاله، ویرایشگر متن نانو دیگری را کشف کردم که بیشتر از vim دوست داشتم، بیایید آن را نصب کنیم:

apt install nano

استفاده از آن راحت تر از vim است و nano رابط کاربر پسندتری دارد. در دستگاه اندرویدی، vim هنوز راحت تر است.

HelloWorld در پایتون در Termux

در کل بدون این آیتم امکان پذیر بود اما گذاشتن پایتون در ترموکس و ننوشتن HelloWorld به نظر من بد اخلاقی است.

من هدف خود را آموزش پایتون به کسی قرار نمی دهم، بنابراین کسانی که نمی دانند می توانند به سادگی کد را کپی کنند (یا خودشان شروع به یادگیری کنند، زیرا ادبیات کافی وجود دارد)، و کسانی که می دانند می توانند خودشان چیزی بسازند. و من "تحت پوشش" هنوز راهی برای وارد کردن متن در ترمینال بدون ویرایشگر نشان خواهم داد.

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)

ترموکس گام به گام (قسمت اول)

اگر در طول فرآیند ورودی متوجه خطایی نشدید و قبلاً Enter را فشار داده اید، نمی توانید به خط بالا بروید، برای انجام این کار، ورودی را با فشار دادن Ctrl + D پایان دهید (به طور کلی می توانید Ctrl + را قطع کنید. ز) و همه چیز را از ابتدا تکرار کنید. از آنجایی که ما از '>' استفاده کردیم، فایل به طور کامل رونویسی می شود. به همین دلیل، استفاده از این روش ورودی را توصیه نمی کنم، مگر اینکه مطمئن باشید که کد را بلافاصله بدون خطا می نویسید.

مرحله 6

اسکریپت های Bash

اسکریپت های Bash یک راه عالی برای خودکار کردن کار ترمینال شما هستند. اسکریپت فایلی با پسوند .sh (پسوند اختیاری است) حاوی مجموعه ای از دستورات ترمینال است که قبلاً برخی از آنها را مطالعه کرده ایم. اینجا لیستی از اکثر دستورات، همه چیز باید کار کند، اما توجه داشته باشید که این یک لیست برای لینوکس "بزرگسال" است، نه 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 # Запускаем выполнение нашего скрипта

ترموکس گام به گام (قسمت اول)

اسکریپت Bash با Termux:API

بیایید چیزی متفاوت از 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 ما در ترمینال در دستگاه اندروید مشاهده می کنیم:

ترموکس گام به گام (قسمت اول)

بنابراین ما اسکریپت برنامه ریزی شده bash را نوشتیم. می توانید آن را با خروجی کنسول اطلاعات مربوط به اجرای هر عمل (با استفاده از اکو) رقیق کنید، این را برای خوانندگان می گذارم.

مرحله 7

بیایید یک کار مفید انجام دهیم

نسبتا مفید

بیایید شرایط مرجع را تدوین کنیم
پس از راه اندازی، برنامه باید یک خط تصادفی از فایل را در کلیپ بورد قرار دهد و با یک پیام پاپ آپ در مورد آن اطلاع دهد.

ما یک اسکریپت bash را به عنوان پایه در نظر می گیریم، یک خط تصادفی را از یک فایل با استفاده از یک زیر روال پایتون استخراج می کنیم. بیایید یک برنامه کاری اسکریپت بسازیم:

  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. بستن فایل

ما الگوریتم را در پایتون پیاده سازی می کنیم (من در پایتون 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 کاربر رای دادند هیچ رای ممتنعی وجود ندارد.

منبع: www.habr.com

اضافه کردن نظر