Termux bosqichma-bosqich (2-qism)

В oxirgi qism biz Termux-ning asosiy buyruqlari bilan tanishdik, shaxsiy kompyuter bilan SSH ulanishini o'rnatdik, taxalluslarni qanday yaratishni o'rgandik va bir nechta foydali yordamchi dasturlarni o'rnatdik. Bu safar biz yanada oldinga qadam tashlashimiz kerak, biz siz bilanmiz:

  • Termux: API haqida bilib oling
  • Python va nano-ni o'rnating va "Salom, dunyo!" deb yozing. Pythonda
  • bash skriptlari haqida bilib oling va Termux: API yordamida skript yozing
  • bash skripti, Termux:API va Python yordamida biz oddiy dastur yozamiz

Endi biz kiritish buyruqlari nima qilishini tushunganimiz sababli, keyingi bosqichdan boshlab men har bir harakatni batafsil tasvirlab bermayman, lekin qiyinchiliklar bo'lishi mumkin bo'lgan joylarda men aniq tushuntiraman.

Men taxalluslardan ko'p foydalanaman, shuning uchun bu qismda ishlatiladigan qisqartmalar bu erda ko'rsatilgan:

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

Reja tayyor, siz boshlashingiz mumkin! Va, albatta, "sehrli yorliq" haqida unutmang (1-qismga qarang).

4 bosqichma

Termuxdan pastga sho'ng'ish: API quyon teshigi

API bu so'zda kodlovchining yuragi uchun qancha birlashdi

Agar biz Termux: API mavzusiga to'xtalmasak, bizning barcha qadamlarimiz birinchi qismga sharhlarda to'g'ri ta'kidlanganidek, "Linux for Dummies" kabi ba'zi risolalarni oddiy takrorlash bilan qisqartirilishi mumkin.

Birinchidan, Google Play Marketdan Termux: API ni o'rnating (keyinroq Termux-ni qayta ishga tushirish zarar qilmaydi):

Termux bosqichma-bosqich (2-qism)

Keyinchalik, API paketini Termux konsoliga o'rnatishimiz kerak:

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

Tajriba uchun men Android 5.1.1 dan foydalanmoqdaman, Android 7 egalari uchun Termux: API ni “Sozlamalar” > “Himoyalangan ilovalar” bo‘limiga o‘tish orqali “himoya qilish” kerak, aks holda API qo‘ng‘iroqlari kabi termux-battery-status, osilib qoladi. (Sm. loyiha wiki)

Endi olingan imkoniyatlarni batafsil ko'rib chiqishga arziydi. Termux:API ning eng soʻnggi va batafsil tavsifini quyidagi manzilda topishingiz mumkin loyiha wiki. Men kelajakda mustaqil ish uchun qo'limni to'ldirishga imkon beradigan eng vizual va qiziqarli tanlashga harakat qilaman.

Ba'zi Termux: API misollari

  • termux-batareya-holat
    Batareyaning holatini qaytaradi
    Termux bosqichma-bosqich (2-qism)
  • termux - yorqinlik
    Ekran yorqinligini 0 dan 255 gacha o'rnatadi
    Termux bosqichma-bosqich (2-qism)
  • termux-tost
    Vaqtinchalik tushdi bildirishnomasini ko'rsatadi
    Termux bosqichma-bosqich (2-qism)
  • termux-mash'al
    Chiroqni o'z ichiga oladi
    Termux bosqichma-bosqich (2-qism)
  • termux-wifi-scaninfo
    Wi-Fi tarmoqlarini oxirgi skanerlash haqidagi ma'lumotlarni qaytaradi
    Termux bosqichma-bosqich (2-qism)

Qaytish qiymatlari satrlar, lug'atlar, lug'atlar ro'yxati, umuman olganda, Python yaxshi ishlaydigan ma'lumotlar turlari ekanligini ko'rish oson, shuning uchun keyingi qadam uni sozlashdir.

5 bosqichma

Python va nano-ni o'rnating

Python-ni o'rnatish uchun terminalga yozing:

updg
apt install python
apt install python2

Endi bizda 2 va 3 Python o'rnatilgan.

Maqola ustida ishlayotganimda men vimdan ko'ra ko'proq yoqadigan yana bir nano matn muharririni topdim, keling uni o'rnatamiz:

apt install nano

Foydalanish vimga qaraganda osonroq va nano foydalanuvchilarga qulayroq interfeysga ega. Android qurilmasida vim hali ham qulayroq.

Termux-da Python-da HelloWorld

Umuman olganda, bu elementsiz ham qilish mumkin edi, lekin Python-ni Termux-ga qo'yish va HelloWorld-ni yozmaslik, menimcha, yomon odobdir.

Men hech kimga Python tilini o'rgatishni maqsad qilganim yo'q, shuning uchun bilmaganlar kodni shunchaki ko'chirib olishlari mumkin (yoki o'zlari o'rganishni boshlashlari mumkin, chunki adabiyotlar etarli), bilganlar esa o'zlari nimadir qilishlari mumkin. Va men "niqobi ostida" hali ham terminalga tahrirlovchisiz matn kiritish usulini ko'rsataman.

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 bosqichma-bosqich (2-qism)

Agar siz kiritish jarayonida xatolikni sezmagan bo'lsangiz va allaqachon Enter tugmasini bosgan bo'lsangiz, yuqoridagi qatorga o'ta olmaysiz, buning uchun Ctrl + D tugmalarini bosib kiritishni yakunlang (odatda Ctrl + tugmachalarini to'xtatishingiz mumkin) Z) va hamma narsani boshidan takrorlang. Biz ">" ni ishlatganimiz uchun fayl butunlay qayta yoziladi. Shu sababli, kodni darhol xatosiz yozishingizga ishonchingiz komil bo'lmasa, ushbu kiritish usulidan foydalanishni tavsiya etmayman.

6 bosqichma

Bash skriptlar

Bash skriptlari terminal ishingizni avtomatlashtirishning ajoyib usuli hisoblanadi. Skript - bu .sh kengaytmali fayl (kengaytma ixtiyoriy), terminal buyruqlar to'plamini o'z ichiga oladi, ularning ba'zilarini biz allaqachon o'rganib chiqdik. Bu yerga eng ko'p buyruqlar ro'yxati, hamma narsa ishlashi kerak, lekin bu Termux emas, balki "kattalar" Linux uchun ro'yxat ekanligini unutmang bash skriptlari bo'yicha ajoyib material.

Skriptlar yordamida siz deyarli barcha monoton harakatlarni avtomatlashtirishingiz mumkin. Keling, u yaratgan o'zgaruvchidan qiymatni aks ettiruvchi eng oddiy bash skriptini yozamiz, men yana cat dan foydalanaman, siz oddiy matn muharriridan foydalanishingiz mumkin va ayniqsa o'zini o'rgatmoqchi bo'lganlar echo dan foydalanishlari mumkin.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

Termux bosqichma-bosqich (2-qism)

Termux: API bilan Bash skripti

Keling, mashhur HelloWorlds-dan farqli, ammo foydasiz narsa yozaylik. Bizning skriptimiz quyidagicha bo'ladi:

  1. termux-battery-status API so'rovini bajaring
  2. olingan ma'lumotlarni test.txt fayliga saqlang
  3. ma'lumotlarni fayldan ekranga chop etish
  4. ilgari yozilgan hello-world.py dasturini bajaring
  5. dasturdan olingan ma'lumotlarni test.txt fayliga yozing
  6. ma'lumotlarni fayldan ekranga chop etish
  7. ma'lumotlarni fayldan vaqtinchalik xotiraga o'tkazish
  8. almashish buferining mazmunini ko'rsatish
  9. almashish buferidagi ma'lumotlar bilan qalqib chiquvchi xabarni ko'rsatish

Birinchidan, ish uchun papka yarating va u yerdan test.py sifatida hello-world.py-dan nusxa oling, ushbu papkada test.sh va test.txt fayllarini yarating:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Endi har qanday qulay usulda skriptni test.sh fayliga yozing:

#!/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

Endi, bashscript papkasida bo'lib, biz yozamiz ./test.sh biz Android qurilmasidagi terminalda kuzatamiz:

Termux bosqichma-bosqich (2-qism)

Shunday qilib, biz rejalashtirilgan bash skriptini yozdik. Siz uni har bir harakatning bajarilishi to'g'risidagi ma'lumotlar konsoliga chiqishi bilan suyultirishingiz mumkin (echo yordamida), men buni o'quvchilarga qoldiraman.

7 bosqichma

Keling, foydali narsa qilaylik

Nisbatan foydali

Keling, texnik topshiriqni tuzamiz
Ishga tushgandan so'ng, dastur buferdagi fayldan tasodifiy qatorni joylashtirishi va bu haqda qalqib chiquvchi xabar bilan xabardor qilishi kerak.

Biz asos sifatida bash skriptini olamiz, Python pastki dasturi yordamida fayldan tasodifiy qatorni chiqaramiz. Skript ish rejasini tuzamiz:

  1. Kichik dasturni ishga tushirish
  2. Pastki dastur natijasini vaqtinchalik xotiraga o'tkazing
  3. Qalqib chiquvchi xabarni ko'rsatish

Keling, katalog va dastur fayllari nomlarini aniqlaymiz:

  • uy katalogidagi rndstr papkasi
    • manba - biz satrlarni oladigan fayl
    • rndstr.py - manba fayldan konsolga tasodifiy chiziqni ko'rsatadigan pastki dastur
    • rndstr.sh - skript fayli

Ilova katalogini yarating va unga o'ting va u erda fayllarni yarating.

Skript rejasining dastlabki ikkita nuqtasini quvur liniyasi orqali birlashtirish mumkin, natijada Termux: API yordamida biz quyidagilarni olamiz:

#!/bin/bash

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

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

Manba faylida siz mantiqiy ravishda satrlarga bo'lingan har qanday matnni qo'yishingiz mumkin, men aforizmlarni qo'yishga qaror qildim:

Manba fayllari ro'yxati

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

Biz shunchaki manba faylidan tasodifiy qatorni chiqaradigan kichik dastur yaratishimiz kerak.
Keling, quyi dasturning algoritmini yozamiz:

  1. Ochiq manba fayli
  2. Ochiq fayldagi qatorlar sonini hisoblash
  3. Faylni yoping (qo'shimcha vaqt uchun uni ochiq saqlash uchun hech narsa yo'q)
  4. Biz manba fayl satrlari soni ichida tasodifiy butun son hosil qilamiz
  5. Ochiq manba fayli
  6. Yaratilgan raqamning raqami ostidagi chiziqni chiqaramiz
  7. Faylni yopish

Biz algoritmni Python da amalga oshiramiz (men Python 3.7 da yozaman):

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  #  закрываем файл

Fayllar yaratilgan va yozilgandan so'ng, siz faylni bajarish uchun ruxsat berishingiz kerak rndstr.sh, va tez ishga tushirish uchun taxallus yarating.

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

Endi terminalda yozilmoqda rnst biz clipboardda tasodifiy aforizmga ega bo'lamiz, uni, masalan, yozishmalarda ishlatish mumkin.

Bu erda biz hech bo'lmaganda foydali narsalarni yozdik. Nisbatan foydali.

PS

Oxirgi bosqichda men qasddan skrinshotlarni bermadim va ba'zi harakatlarni batafsil tahlil qilmadim, faqat o'quvchilar o'zlari ishlash imkoniyatiga ega bo'lishlari uchun fayllarning mazmunini yozdim.

Ushbu "Termux asta-sekin" da, men buni tugatishga arziydi, deb o'ylayman. Albatta, bu faqat birinchi qadamlar, ammo endi siz o'zingiz oldinga siljishingiz mumkin.

Dastlab, men ushbu tsiklda nmap, sqlmap-dan qanday foydalanishni ko'rsatishni rejalashtirgandim, ammo mensiz bu mavzu bo'yicha juda ko'p maqolalar mavjud. Agar siz "Termux bosqichma-bosqich" tsiklini davom ettirishimni istasangiz, unda quyida so'rovnoma mavjud va sharhlarda yana nima haqida yozishni taklif qilishingiz mumkin.

So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.

“Termux bosqichma-bosqich” davom ettirilsinmi?

  • ekan

  • yo'q

2 ta foydalanuvchi ovoz berdi. Betaraflar yo‘q.

Manba: www.habr.com

a Izoh qo'shish