{"id":30531,"date":"2019-10-31T21:36:03","date_gmt":"2019-10-31T18:36:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/termux-shag-za-shagom-chast-2\/"},"modified":"2019-10-31T21:36:03","modified_gmt":"2019-10-31T18:36:03","slug":"termux-shag-za-shagom-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","title":{"rendered":"Termux samm-sammult (Osa 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">eelmisest osast<\/a><\/noindex> oleme tutvunud Termux'i p\u00f5hikomplektiga, seadnud \u00fcles SSH-\u00fchenduse arvutiga, \u00f5ppinud loomaaedade loomist ning installinud m\u00f5ned kasulikud utiliidid. Seekord astume veelgi kaugemale, me:<\/p>\n<p><\/p>\n<ul>\n<li>\u00f5pime tundma Termux:API<\/li>\n<li>installime Python'i ja nano, samuti kirjutame 'Tere, maailm!' Python'is.<\/li>\n<li>\u00f5pime tundma bash-skripte ning kirjutame skripti, kasutades Termux:API'd<\/li>\n<li>kasutades bash-skripti, Termux:API't ja Python'it, kirjutame lihtsa programmi <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Kuna me n\u00fc\u00fcd m\u00f5istame, mida sisestatud k\u00e4sud teevad, ei hakka ma edaspidi iga tegevust nii detailselt kirjeldama, kuid seal, kus v\u00f5ivad tekkida raskused, annan kindlasti selgitusi.<\/p>\n<p><\/p>\n<p>Ma kasutan sageli alias'e, seega on selles osas kasutatud l\u00fchendeid toodud siin:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias updg='apt update &amp;&amp; apt upgrade'\nalias py='python'<\/code><\/pre>\n<p><\/p>\n<p>Plaani on valmis, v\u00f5ime alustada! Ja muidugi \u00e4rge unustage 'maagilist Tab' (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">Vaata osa 1<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h2>4. samm<\/h2>\n<p><\/p>\n<h3>Sukeldume Termux:API kr\u00fcptol\u00f5ksu<\/h3>\n<p><\/p>\n<p><i>API, kui palju on selle s\u00f5na sees kodeerija s\u00fcdamesse sulandunud<\/i><\/p>\n<p><\/p>\n<p>Kui j\u00e4tta k\u00f5rvale Termux:API teema, v\u00f5iksime k\u00f5ik meie sammud kokku v\u00f5tta lihtsalt mingi bro\u0161\u00fc\u00fcri, nagu 'Linux algajatele', \u00fctleks, nagu \u00f5igesti m\u00e4rgiti esimese osa kommentaarides.<\/p>\n<p><\/p>\n<p>Kuna me alustame, installime Termux:API Google Play poest (p\u00e4rast on soovitatav Termux uuesti k\u00e4ivitada):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/415e25a8ddefc5d4f1741c97d742eeb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4rgmine samm on API-paketi installimine Termux'i konsoolis:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg # \u00c4rge unustage alias'e\napt install termux-api<\/code><\/pre>\n<p><\/p>\n<p>Eksperimenteerin Android 5.1.1-l, Android 7 omanikel tuleb \u201ekaitsta\u201d Termux: API, minnes \u2018Seaded\u2019 &gt; \u2018Kaitstud rakendused\u2019, vastasel juhul j\u00e4\u00e4vad API k\u00f5ned, nagu <code>termux-battery-status<\/code>, hanguma. (Vaata. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">projekti wikipediat<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd tasub tutvuda omandatud v\u00f5imalustega. K\u00f5ige v\u00e4rskema ja \u00fcksikasjalikuma kirjelduse Termux:API kohta leiate <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">projekti wikipediat<\/a><\/noindex>. P\u00fc\u00fcan v\u00e4lja valida k\u00f5ige silmatorkavama ja huvitavama, mis aitab saada oskusi iseseivaks t\u00f6\u00f6ks edaspidi.<\/p>\n<p><\/p>\n<h3>M\u00f5ned Termux:API n\u00e4idised <\/h3>\n<p><\/p>\n<ul>\n<li>termux-battery-status<br \/>\nTagastab aku staatuse<br \/>\n<img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/9a5f793d1b028905b3ee9ceab0fbcdec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-brightness<br \/>\nSeab ekraani heledust vahemikus 0 kuni 255<br \/>\n<img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/23e5f3726607921d7f52d5d0de543968.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-toast<br \/>\nKuvab ajutise t\u00fctar\u00fchi teate<br \/>\n<img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/5c75ad9b678773801ea9975b23422384.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-torch<br \/>\nL\u00fclitab taskulambi sisse<br \/>\n<img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7695202f5972e93e5b7a8f4bd952882c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-wifi-scaninfo<br \/>\nTagastab teabe viimase Wi-Fi v\u00f5rgu skaneerimise kohta<br \/>\n<img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/f10669f8e7dff1046ab4f9b7d68228e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ul>\n<p><\/p>\n<p>On lihtne m\u00e4rkida, et tagastatavad v\u00e4\u00e4rtused on stringid, s\u00f5nastikud, s\u00f5nastike loendid, \u00fcldiselt andmet\u00fc\u00fcbid, millega Python suurep\u00e4raselt koost\u00f6\u00f6d teeb, seet\u00f5ttu j\u00e4rgmiseks sammuks installime selle.<\/p>\n<p><\/p>\n<h2>Samm 5<\/h2>\n<p><\/p>\n<h3>Installime Python ja nano<\/h3>\n<p><\/p>\n<p>Python'i installimiseks kirjutame terminali:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg\napt install python\napt install python2<\/code><\/pre>\n<p><\/p>\n<p>N\u00fc\u00fcd on meil installitud Python 2 ja 3.<\/p>\n<p><\/p>\n<p>Artikli kirjutamise ajal avastasin veel \u00fche tekstiredaktori nano, mis meeldis mulle rohkem kui vim, installime selle:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt install nano<\/code><\/pre>\n<p><\/p>\n<p>Seda on lihtsam kasutada kui vim'i, ja nano'l on s\u00f5bralikum liides. <i>Android-seadmes on siiski mugavam kasutada vim'i.<\/i><\/p>\n<p><\/p>\n<h3>HelloWorld Pythonis Termuxis<\/h3>\n<p><\/p>\n<p>Suuresti oleks saanud ka sellest punktist m\u00f6\u00f6da minna, kuid Python'i paigaldamine Termux'i ja mitte HelloWorld'i kirjutamine oleks minu arvates imelik.<\/p>\n<p><\/p>\n<p>Ma ei p\u00fc\u00fcdle kellegi \u00f5petamiseks Python'is, nii et need, kes ei tea, saavad lihtsalt kopeerida koodi (v\u00f5i hakata iseseisvalt \u00f5ppima, kuna materjale on piisavalt), ja need, kes teavad, saavad ka ise midagi v\u00e4lja m\u00f5elda. Ja ma 'k\u00f5rvaltes' n\u00e4itan veel viisi, kuidas sisestada tekst terminalis ilma redigeerijata.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;hello-world.py     \n# Kui te ei n\u00e4ita allikat (meenutan cat 1.txt &gt; 2.txt)\n# siis cat v\u00f5tab andmed standardse sisendvoo kaudu,\n# lihtsamalt \u00f6eldes, klaviatuurilt sisestatud andmed.\n\nstr = 'Hello, world!' # omistame muutujaile str v\u00e4\u00e4rtuse \"Hello, world!\"\nprint (str) # kuvame ekraanile muutuja str v\u00e4\u00e4rtuse\n\n# Ctrl + D l\u00f5petab sisendi ja salvestab faili (hello-world.py)\n\npy hello-world.py # k\u00e4ivitage fail (py on l\u00fchend pythonist)<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/e9086da1ce27f723681f142dad11d878.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui sisestamise ajal ei m\u00e4rganud te viga ja vajutasite Enter, siis ei saa te liikuda \u00fcleviimisele, l\u00f5petage sisend vajutades Ctrl + D (v\u00f5ite ka katkestada Ctrl + Z) ja korrake k\u00f5ike algusest. Kuna me kasutasime '&gt;', siis fail kirjutatakse t\u00e4ielikult \u00fcle. Seet\u00f5ttu ei soovita ma seda sisestusmeetodit kasutada, kui te ei ole kindel, et kirjutate koodi kohe ilma vigadeta.<\/p>\n<p><\/p>\n<h2>Samm 6<\/h2>\n<p><\/p>\n<h3>Bash-skripti<\/h3>\n<p><\/p>\n<p>Bash-skripti on suurep\u00e4rane viis terminali t\u00f6\u00f6 automatiseerimiseks. Skript on fail laiendiga .sh (laiend ei ole kohustuslik), mis sisaldab terminali k\u00e4skude kogumit, millest osa oleme juba \u00f5ppinud. Siin on <noindex><a rel=\"nofollow\" href=\"https:\/\/tproger.ru\/translations\/bash-cheatsheet\/\">enamiku k\u00e4skude nimekiri<\/a><\/noindex>, k\u00f5ik peaks t\u00f6\u00f6tama, kuid pidage meeles, et see on loetelu 't\u00e4iskasvanud' Linux'ist, mitte Termux'ist, ja lihtsalt <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/325522\/\">suurep\u00e4rane materjal bash-skripti kohta<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Skriptide abil saab automatiseerida praktiliselt k\u00f5iki rutiinseid toiminguid. Kirjutame k\u00f5ige lihtsama bash-skripti, mis v\u00e4ljastab v\u00e4\u00e4rtuse, mille tema endaga loonud, ja ma kasutan j\u00e4lle cat\u2019i, teie aga v\u00f5ite kasutada normaalset tekstiredaktorit, ja kes soovib, v\u00f5ib harjutada echo kasutamist.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;test.sh\n\nexport str=\"Tere, Habr!\"\n# export loob muutuja str\n# ja m\u00e4\u00e4rab sellele v\u00e4\u00e4rtuseks \"Tere, Habr!\"\n# \u00c4rge lisage t\u00fchikuid enne ega p\u00e4rast \u2018=\u2019\n\necho $str # Muutujate poole p\u00f6\u00f6rdumiseks asetage enne neid \u2018$\u2019\n\n# Ctrl + D\n\n# .\/test.sh skripti k\u00e4ivitamiseks, kuid kui seda praegu teha, siis tuleb viga\n# vea v\u00e4ltimiseks peate faili test.sh t\u00e4itmiseks \u00f5igustama\n\nchmod +x test.sh\n# chmod muudab juurdep\u00e4\u00e4su\u00f5igusi (+ lisab \/ - eemaldab)\n# \u2018+x\u2019 t\u00e4hendab, et teeme failist t\u00e4idetava\n\n.\/test.sh # K\u00e4ivitame skripti t\u00e4itmise<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7c56f1aaf938a711f3a30dd3eed3eec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3>Bash-skript Termux:API-ga<\/h3>\n<p><\/p>\n<p>K\u00e4ime kirjutama midagi, mis erineb nendest kuulsatest HelloWorld\u2019idest, kuid on sama kasutu. Meie skript on:<\/p>\n<p><\/p>\n<ol>\n<li>teostama API p\u00e4ringut termux-battery-status<\/li>\n<li>salvestama saadud andmed faili test.txt<\/li>\n<li>v\u00e4ljastama andmed failist ekraanile<\/li>\n<li>teostama varem kirjutatud programmi hello-world.py<\/li>\n<li>saadud programmi andmed salvestama faili test.txt<\/li>\n<li>v\u00e4ljastama andmed failist ekraanile<\/li>\n<li>\u00fcle kandma andmed failist l\u00f5ikepuhvrisse<\/li>\n<li>v\u00e4ljastama ekraanile l\u00f5ikepuhvri sisu<\/li>\n<li>v\u00e4ljastama h\u00fcpikakna, kus on andmed l\u00f5ikepuhvrist<\/li>\n<\/ol>\n<p><\/p>\n<p>Esiteks loome t\u00f6\u00f6kausta ja kopeerime sinna hello-world.py nimega test.py, loome selles kaustas failid test.sh ja test.txt:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">mkdir bashscript\n\ncat hello-world.py &gt;&gt; bashscript\/test.py\n\ncd bashscript\/\n\ntouch test.sh test.txt # touch loob failid\n\nchmod +x test.sh<\/code><\/pre>\n<p><\/p>\n<p>N\u00fc\u00fcd kirjutame faili test.sh skripti mistahes mugaval viisil:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\n\n# \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c #! (\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0448\u0435\u0431\u0430\u043d\u0433)\n# \u043f\u043e\u0441\u043b\u0435 \u0438\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0448\u0435\u043b\u043b \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442\n\nclear # \u043e\u0447\u0438\u0441\u0442\u0438\u043c \u043e\u043a\u043d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\n\ntermux-battery-status &gt; test.txt # \u043f\u0443\u043d\u043a\u0442\u044b 1 \u0438 2 \u0438\u0437 \u043d\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430\n\ncat test.txt # \u043f\u0443\u043d\u043a\u0442 3\n\npython test.py &gt; test.txt # \u043f\u0443\u043d\u043a\u0442 4 \u0438 5\n\ncat test.txt # \u043f\u0443\u043d\u043a\u0442 6\n\ncat test.txt | termux-clipboard-set # \u043f\u0443\u043d\u043a\u0442 7\n# | \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440. \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u044b\u0445\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0433\u043e\n\ntermux-clipboard-get # \u043f\u0443\u043d\u043a\u0442 8\n\ntermux-clipboard-get | termux-toast # \u043f\u0443\u043d\u043a\u0442 9<\/code><\/pre>\n<p><\/p>\n<p>N\u00fc\u00fcd, olles bashscript kaustas, kirjutame <code>.\/test.sh<\/code> vaatame Android seadme terminalis:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux samm-sammult (Osa 2)\" src=\"\/wp-content\/uploads\/2019\/03\/44c6632c7a3903dad1113017dc81ee61.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii, oleme kirjutanud plaanitud bash-skripti. V\u00f5ib lisada selle v\u00e4ljaandmise kohta teavet konsolisse (kasutades echo), see j\u00e4\u00e4b lugejatele.<\/p>\n<p><\/p>\n<h2>Samm 7<\/h2>\n<p><\/p>\n<h3>Teeme midagi kasulikku<\/h3>\n<p><\/p>\n<p><i>Suhteliselt kasulik<\/i><\/p>\n<p><\/p>\n<p>Vormistame tehnilise \u00fclesande<br \/>\nRakendus peab p\u00e4rast k\u00e4ivitamist panema l\u00f5ikepuhvrisse juhusliku rea failist ja teavitama sellest h\u00fcpikakna kaudu.<\/p>\n<p><\/p>\n<p>V\u00f5tame aluseks bash-skripti, juhusliku rea faili seest ekstraheerimiseks kasutame Python'i alamprogrammi. Koostame skripti t\u00f6\u00f6plaani:<\/p>\n<p><\/p>\n<ol>\n<li>K\u00e4ivita alamprogramm<\/li>\n<li>Edasta alamprogrammi t\u00f6\u00f6 tulemus l\u00f5ikepulti<\/li>\n<li>Kuva h\u00fcpikaken<\/li>\n<\/ol>\n<p><\/p>\n<p>M\u00e4\u00e4ratleme rakenduse kaustade ja failide nimed:<\/p>\n<p><\/p>\n<ul>\n<li>kaust rndstr kodukataloogis\n<ul>\n<li>source \u2014 fail, millest v\u00f5tame read<\/li>\n<li>rndstr.py \u2014 alamprogramm, mis v\u00e4ljastab j\u00e4rjendi juhusliku rea failist source<\/li>\n<li>rndstr.sh \u2014 skriptifail<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Loome rakenduse katalooge ja liikudes sinna loome seal failid.<\/p>\n<p><\/p>\n<p>Kava esimesed kaks punkti saab \u00fchendada toruks, l\u00f5puks, kasutades Termux:API saame:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\n\npython ~\/rndstr\/rndstr.py | termux-clipboard-set # 1 \u0438 2 \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u044b\n\ntermux-toast \"OK\" # 3 \u043f\u0443\u043d\u043a\u0442. \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \"\u041e\u041a\"<\/code><\/pre>\n<p><\/p>\n<p>Faili source v\u00f5id paigutada mistahes teksti, mis on loogiliselt jagatud ridadesse, ma otsustasin lisada aforisme:<\/p>\n<p>\n<b class=\"spoiler_title\">Faili sourse loend<\/b><\/p>\n<pre><code class=\"plaintext\">Siirus ei ole t\u00f5de. L. Laval\nKannata ja ole m\u00f5\u00f5dukas. Epiktet\nAinult see, mis onulles\u00fcdamlik. J. La Bruy\u00e8re\nOle kaalutletult julge. B. Graci\u00e1n\nHeatahtlikkus on ilusast parem. G. Heine\nSuurettev\u00f5tete jaoks on vajalik v\u00e4simatu j\u00e4rjepidevus. F. Voltaire\nKui soovid, et sulle alati meelditaks, teenid ise ennast. B. Franklin\nLiigne tagasihoidlikkus on mitte midagi muud kui varjatud uhkus. A. Chenier\nV\u00e4ga intelligentsetele inimestele ei usaldata, kui nad n\u00e4evad nende h\u00e4bitunnet. F. Nietzsche\nVaesus n\u00e4itab vahendite puudumist, mitte rikka olemise puudumist. D. Boccaccio\nTuleb ettevaatlikult suhtuda tagasihoidlikkuse alandamiseni. A. Bakikhanov\nKes loobub paljust, v\u00f5ib endale palju lubada. J. Chardon\nKui meid tasustatakse \u00fcllas tegu eest, siis v\u00f5etakse see meilt \u00e4ra. N. Chamfort\nPole hirmu mitte saada, aga saada saadud on kurb. Klaudius Elian\nOn kergem taluda seda, mida me ei saa parandada. Horatius\nV\u00e4sid ootamast, kuid kui palju halvem oleks, kui ootamiseks ei j\u00e4\u00e4kski enam midagi. B. Shaw\nK\u00f5ik tuleb \u00f5igel ajal, kui inimesed oskavad oodata. F. Rabelais\nOma kannatlikkuse abil v\u00f5ime saavutada rohkem kui j\u00f5ud. E. Burke\nPeab oskama taluda seda, mida ei saa v\u00e4ltida. M. Montaigne\nKes on tehingus julge, ei karda s\u00f5nu. Sofokles\nMa ei armasta v\u00f5idelda, ma armastan v\u00f5ita. B. Shaw\nJahmunud ja seina \u00e4\u00e4res surutud kass muutub tiigri sarnaseks. M. Cervantes\nAuhinnaline inimene ei k\u00e4i teiste j\u00e4lgedes. Konfutsius\nSuuremeelsus avaldab oma j\u00f5udu mitte ainult m\u00f5elda oskuses, vaid ka elada oskuses. R. Emerson\nKuulsus on ebasoodsus. See maksab palju, kuid p\u00fcsib halvasti. O. Balzac\nK\u00e4itumine ja asjakohasus vestlustes on v\u00e4rvikusest olulisem. F. Bacon\nKes ei oska vaikida, see ei suuda ka r\u00e4\u00e4kida. Seneca Noorem\nHeade kommete aluseks on v\u00e4ikesed ohvrid. F. Chesterfield\nHea inimene ei ole see, kes oskab head teha, vaid see, kes ei oska kurja teha. V. Kliuchevsky\n\u00c4rge tehke p\u00f6\u00f6rdumatuid otsuseid! Augustine\nMitte midagi liiga palju! Solon<\/code><\/pre>\n<p><\/p>\n<p>Meil j\u00e4\u00e4b j\u00e4\u00e4nud luua alamprogramm, mis t\u00f5mbab juhusliku rea failist source.<br \/>\nKirjutame v\u00e4lja alamprogrammi t\u00f6\u00f6 algoritmi:<\/p>\n<p><\/p>\n<ol>\n<li>Avame faili source<\/li>\n<li>Loeme avatud faili ridade arvu<\/li>\n<li>Sulgeme faili (pole m\u00f5tet seda \u00fcleliia avatud hoida)<\/li>\n<li>Genereerime juhusliku t\u00e4isarvu faili source ridade arvu piires<\/li>\n<li>Avame faili source<\/li>\n<li>Kuvame rea, mille number on genereeritud number<\/li>\n<li>Sulgeme faili<\/li>\n<\/ol>\n<p><\/p>\n<p>Rakendame algoritmi Pythonis (kirjutan Python 3.7 jaoks):<\/p>\n<p><\/p>\n<pre><code class=\"python\">import random \u00a0#  importime juhuslikke numbreid\nimport os \u00a0#  teede saamiseks\n\npath = os.path.abspath(__file__)  # \u00a0saame otsetee faili rndstr.py\npath = os.path.dirname(path) \u00a0#  saame tee katalooge\npath = path \u00a0+ '\/source'  #  muundame faili source teeks\n\nf = open(path) \u00a0#  avame faili\ni = 0 \u00a0#  l\u00e4htestame loenduri\nfor str in f: i+=1 \u00a0#  loeme faili ridu\nf.close \u00a0#  sulgeme faili\n\nj = int(round(i * random.random())) \u00a0#  genereerime t\u00e4isarvu vahemikus 0 kuni i\n\nf = open(path) \u00a0#  avame faili\ni = 0 \u00a0#  l\u00e4htestame loenduri\nfor str in f: \u00a0#  l\u00e4bitseme faili ridu\n \u00a0\u00a0\u00a0if i == j: \u00a0#  kui loenduri v\u00e4\u00e4rtus on genereeritud arv\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print (str, end='') \u00a0#  prindime rea ilma uuele reale minemata\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break  # \u00a0v\u00e4ljumine ts\u00fcklist\n \u00a0\u00a0\u00a0i+=1 \u00a0#  suurendame loendurit 1 v\u00f5rra\nf.close \u00a0#  sulgeme faili<\/code><\/pre>\n<p><\/p>\n<p>P\u00e4rast failide loomist ja salvestamist on vajalik anda failile t\u00e4itmis\u00f5igused <code>rndstr.sh<\/code>, ja luua alias kiireks k\u00e4ivitamiseks.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias rnst=\"~\/rndstr\/rndstr.sh\"<\/code><\/pre>\n<p><\/p>\n<p>N\u00fc\u00fcd sisestades terminalis <code>rnst<\/code> saame l\u00f5ikelauale juhusliku aforismi, mida v\u00f5ib kasutada n\u00e4iteks vestluses.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd oleme kirjutanud v\u00e4hemalt midagi kasulikku. Suhteliselt kasulikku.<\/p>\n<p><\/p>\n<h3>P.s.<\/h3>\n<p><\/p>\n<p>Ma tahtlikult ei toonud viimasel sammul v\u00e4lja ekraanipilte ja ei anal\u00fc\u00fcsinud \u00fcksikasjalikult m\u00f5ningaid toiminguid, vaid lihtsalt kirjeldasin failide sisu, et lugejatel oleks v\u00f5imalus ise t\u00f6\u00f6tada.<\/p>\n<p><\/p>\n<p>Selle 'Termux samm-sammult' v\u00f5iksin l\u00f5petada. Muidugi on see alles k\u00f5ige varasemad sammud, kuid n\u00fc\u00fcd saate edasi liikuda ise.<\/p>\n<p><\/p>\n<p>Algul plaanisin n\u00e4idata, kuidas kasutada nmap'i, sqlmap'i, kuid isegi ilma minuta on seda teemat juba palju artikleid. Kui soovite, et ma j\u00e4tkaks 'Termux samm-sammult' ts\u00fcklit, siis allpool on k\u00fcsitlus ja kommentaarides saate pakkuda, millest veel kirjutada.<\/p>\n<p class=\"for_users_only_msg\">Ainult registreeritud kasutajad saavad k\u00fcsitluses osaleda. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Logige sisse<\/a><\/noindex>, palun.<\/p>\n<h2 class=\"default-block__polling-title\">Kas soovite j\u00e4tkata 'Termux samm-sammult'?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jah<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ei<\/p>\n<\/li>\n<\/ul>\n<p>    H\u00e4\u00e4letas 2 kasutajat. Vastasid ei ole.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445868\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#8217;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#8217;\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0448\u0430\u0433\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u044b \u0441 \u0432\u0430\u043c\u0438: \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e Termux:API \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0438 nano, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c &#171;Hello, world!&#187; \u043d\u0430 Python \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22529,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#039;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#039;\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0448\u0430\u0433\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u044b \u0441 \u0432\u0430\u043c\u0438: \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e Termux:API \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0438 nano, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c &quot;Hello, world!&quot; \u043d\u0430 Python \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Termux \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#039;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#039;\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0448\u0430\u0433\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u044b \u0441 \u0432\u0430\u043c\u0438: \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e Termux:API \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0438 nano, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c &quot;Hello, world!&quot; \u043d\u0430 Python \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:36:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:36:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Termux samm-sammult (Osa 2) | ProHoster","description":"Eelmises osas tutvusime Termux'i p\u00f5hik\u00e4sudega, seadistasime SSH-\u00fchenduse arvutiga, \u00f5ppisime looma alias'e ja installisime m\u00f5ned kasulikud utiliidid. Seekord astume veelgi edasi, me: saame teada Termux:API, installime Python'i ja nano, ning kirjutame Python'is \"Tere, maailm!\", saame teada bash-skriptide kohta ja kirjutame skripti.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Termux \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster","og:description":"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux'\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias'\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0448\u0430\u0433\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u044b \u0441 \u0432\u0430\u043c\u0438: \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e Termux:API \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0438 nano, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c &quot;Hello, world!&quot; \u043d\u0430 Python \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:36:03+00:00","article:modified_time":"2019-10-31T18:36:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30531","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 01:39:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:16:48","updated":"2026-01-21 01:39:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=30531"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30531\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/22529"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}