В
- sužinokite apie Termux:API
- įdiekite Python ir nano ir parašykite "Labas, pasauli!" Python
- sužinokite apie bash scenarijus ir parašykite scenarijų naudodami Termux:API
- naudodami bash scenarijų, Termux:API ir Python parašysime paprastą programą
Kadangi dabar suprantame, ką daro įvesties komandos, tai nuo kito žingsnio taip detaliai neaprašysiu kiekvieno veiksmo, bet kur gali kilti sunkumų, tikrai paaiškinsiu.
Aš dažnai naudoju slapyvardžius, todėl šioje dalyje naudojami sutrumpinimai rodomi čia:
alias updg='apt update && apt upgrade'
alias py='python'
Planas paruoštas, galite pradėti! Ir, žinoma, nepamirškite apie „stebuklingą skirtuką“ (
Žingsnis 4
Nardymas žemyn Termux: API Triušio skylė
API kiek susiliejo šiame žodyje koduotojo širdžiai
Jei neliesime temos Termux: API, tai visi mūsų žingsniai gali apsiriboti paprasčiausiu kokios nors brošiūros, pavyzdžiui, „Linux for Dummies“, perpasakojimu, kaip buvo teisingai pažymėta pirmosios dalies komentaruose.
Pirmiausia įdiekite Termux:API iš „Google Play“ rinkos (po to nepakenks iš naujo paleisti Termux):
Tada turime įdiegti API paketą Termux konsolėje:
updg # Не забываем про alias’ы
apt install termux-api
Eksperimentams naudoju Android 5.1.1, Android 7 savininkai turi "apsaugoti" Termux: API, eidami į "Nustatymai" > "Apsaugotos programos", kitu atveju API skambučiai, pvz. termux-battery-status
, pakabins. (Cm.
Dabar verta atidžiau pažvelgti į įgytas galimybes. Naujausią ir išsamiausią Termux:API aprašymą rasite adresu
Kai kurie Termux:API pavyzdžiai
- termux-baterijos būsena
Grąžina akumuliatoriaus būseną
- termux-ryškumas
Nustato ekrano ryškumą nuo 0 iki 255
- termux-skrudinta duona
Rodomas laikinas skrebučio pranešimas
- termux žibintuvėlis
Apima žibintuvėlį
- termux-wifi-scaninfo
Pateikia informaciją apie paskutinį „Wi-Fi“ tinklų nuskaitymą
Nesunku pastebėti, kad grąžinamos reikšmės yra eilutės, žodynai, žodynų sąrašai, apskritai duomenų tipai, su kuriais „Python“ puikiai veikia, todėl kitas žingsnis yra jį nustatyti.
Žingsnis 5
Įdiekite Python ir nano
Norėdami įdiegti Python, terminale parašykite:
updg
apt install python
apt install python2
Dabar turime įdiegę 2 ir 3 Python.
Dirbdamas su straipsniu atradau kitą nano teksto rengyklę, kuri man patiko labiau nei vim, įdiekime ją:
apt install nano
Ją naudoti lengviau nei vim, o nano sąsaja yra patogesnė. „Android“ įrenginyje „vim“ vis dar yra patogesnis.
HelloWorld Python, Termux
Apskritai, buvo galima apsieiti ir be šio elemento, bet įdėti Python į Termux ir neparašyti HelloWorld, mano nuomone, yra bloga maniera.
Nekeliu sau tikslo ką nors mokyti Python, todėl nežinantys gali tiesiog nukopijuoti kodą (arba pradėti mokytis savarankiškai, nes literatūros užtenka), o žinantys gali ką nors pasidaryti patys. O aš „padanga“ dar parodysiu būdą, kaip įvesti tekstą terminale be redaktoriaus.
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)
Jei įvedimo proceso metu nepastebėjote klaidos ir jau paspaudėte Enter, tada negalėsite eiti į aukščiau esančią eilutę, kad tai padarytumėte, įvedimą užbaikite paspausdami Ctrl + D (paprastai galite pertraukti Ctrl + Z) ir pakartokite viską nuo pradžių. Kadangi naudojome „>“, failas bus visiškai perrašytas. Dėl šios priežasties nerekomenduoju naudoti šio įvesties būdo, nebent esate tikri, kad kodą parašysite iš karto be klaidų.
Žingsnis 6
Bash scenarijus
Bash scenarijai yra puikus būdas automatizuoti terminalo darbą. Scenarijus yra failas su plėtiniu .sh (plėtinys neprivalomas), kuriame yra terminalo komandų rinkinys, kai kurias iš jų jau ištyrėme. Čia
Scenarijų pagalba galite automatizuoti beveik visus monotoniškus veiksmus. Parašykime paprasčiausią bash scenarijų, kuris rodo reikšmę iš jo sukurto kintamojo, aš vėl naudosiu cat, galite naudoti įprastą teksto rengyklę, o tie, kurie ypač nori treniruotis, gali naudoti 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 scenarijus su Termux:API
Parašykime ką nors kitokio nei liūdnai pagarsėjusio HelloWorlds, bet taip pat nenaudinga. Mūsų scenarijus bus toks:
- vykdyti termux-battery-status API užklausą
- gautus duomenis išsaugokite faile test.txt
- spausdinti duomenis iš failo į ekraną
- paleiskite anksčiau parašytą hello-world.py programą
- įrašyti iš programos gautus duomenis į failą test.txt
- spausdinti duomenis iš failo į ekraną
- perkelti duomenis iš failo į mainų sritį
- rodyti iškarpinės turinį
- rodyti iššokantįjį pranešimą su duomenimis iš mainų srities
Pirmiausia sukurkite darbo aplanką ir nukopijuokite hello-world.py kaip test.py, šiame aplanke sukurkite test.sh ir test.txt failus:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch создает файлы
chmod +x test.sh
Dabar bet kokiu patogiu būdu parašykite scenarijų į test.sh failą:
#!/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
Dabar, būdami bashscript aplanke, rašome ./test.sh
„Android“ įrenginio terminale stebime:
Taigi mes parašėme suplanuotą bash scenarijų. Galite jį atskiesti su išvestimi į informacijos apie kiekvieno veiksmo vykdymą konsolę (naudodami aidą), paliksiu tai skaitytojams.
Žingsnis 7
Padarykime ką nors naudingo
Santykinai naudinga
Suformuluokime užduoties sąlygas
Po paleidimo programa turėtų įdėti atsitiktinę eilutę iš failo į mainų sritį ir apie tai pranešti iššokančiu pranešimu.
Kaip pagrindą paimsime bash scenarijų, iš failo ištrauksime atsitiktinę eilutę naudodami Python paprogramę. Padarykime scenarijaus darbo planą:
- Vykdykite paprogramę
- Perkelkite paprogramės rezultatą į mainų sritį
- Rodyti iššokantį pranešimą
Apibrėžkime katalogų ir programų failų pavadinimus:
- rndstr aplanką namų kataloge
- šaltinis – failas, iš kurio paimsime eilutes
- rndstr.py – paprogramė, kuri rodo atsitiktinę eilutę iš šaltinio failo į konsolę
- rndstr.sh – scenarijaus failas
Sukurkite programų katalogą, pereikite prie jo ir kurkite failus.
Pirmieji du scenarijaus plano taškai gali būti sujungti dujotiekiu, todėl naudojant Termux: API gauname:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"
Šaltinio faile galite įdėti bet kokį tekstą, logiškai suskirstytą į eilutes, aš nusprendžiau įdėti aforizmus:
Šaltinio failų sąrašas
Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон
Mums tereikia sukurti paprogramę, kuri iš šaltinio failo ištraukia atsitiktinę eilutę.
Parašykime paprogramės algoritmą:
- Atvirojo kodo failas
- Atviro failo eilučių skaičiaus skaičiavimas
- Uždarykite failą (nėra ko, kad jis būtų atidarytas papildomam laikui)
- Sugeneruojame atsitiktinį sveikąjį skaičių šaltinio failo eilučių skaičiuje
- Atvirojo kodo failas
- Išvedame eilutę po sugeneruoto skaičiaus numeriu
- Failo uždarymas
Algoritmą įgyvendiname Python (rašau pagal 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 # закрываем файл
Sukūrę ir parašę failus, turite suteikti failo vykdymo leidimus rndstr.sh
ir sukurkite slapyvardį, kad galėtumėte greitai paleisti.
alias rnst="~/rndstr/rndstr.sh"
Dabar įveskite terminalą rnst
iškarpinėje gausime atsitiktinį aforizmą, kurį, pavyzdžiui, galima panaudoti susirašinėjant.
Čia bent ką naudingo parašėme. Santykinai naudinga.
PS
Paskutiniame žingsnyje tyčia nepateikiau ekrano kopijų ir detaliai neanalizavau kai kurių veiksmų, parašydamas tik failų turinį, kad skaitytojai turėtų galimybę dirbti patys.
Šį „Termux žingsnis po žingsnio“, manau, verta užbaigti. Žinoma, tai tik patys pirmieji žingsniai, bet dabar galite judėti į priekį patys.
Iš pradžių planavau šiame cikle parodyti kaip naudotis nmap, sqlmap, bet be manęs jau yra daug straipsnių šia tema. Jei norite, kad tęsčiau "Termux žingsnis po žingsnio" ciklą, tada žemiau yra apklausa ir komentaruose galite pasiūlyti apie ką dar parašyti.
Apklausoje gali dalyvauti tik registruoti vartotojai.
Tęsti „Termux žingsnis po žingsnio“?
-
Taip
-
Ne
Balsavo 2 vartotojai. Susilaikiusiųjų nėra.
Šaltinis: www.habr.com