{"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\/sk\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","title":{"rendered":"Termux krok za krokom (\u010cas\u0165 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">minulej \u010dasti<\/a><\/noindex> Spoznali sme sa s z\u00e1kladn\u00fdmi pr\u00edkazmi Termuxu, nastavili SSH pripojenie k PC, nau\u010dili sme sa vytv\u00e1ra\u0165 aliasy a nain\u0161talovali sme nieko\u013eko u\u017eito\u010dn\u00fdch util\u00edt. Tentoraz n\u00e1s \u010dak\u00e1 \u010fal\u0161\u00ed krok, spolu sa:<\/p>\n<p><\/p>\n<ul>\n<li>zist\u00edme o Termux:API<\/li>\n<li>nain\u0161talujeme Python a nano, a nap\u00ed\u0161eme \u201eHello, world!\u201c v Pythone<\/li>\n<li>zist\u00edme o bash skriptoch a nap\u00ed\u0161eme skript vyu\u017e\u00edvaj\u00faci Termux:API<\/li>\n<li>pou\u017eit\u00edm bash skriptu, Termux:API a Pythona nap\u00ed\u0161eme jednoduch\u00fd program <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Ke\u010f\u017ee teraz ch\u00e1peme, \u010do robia zadan\u00e9 pr\u00edkazy, od tohto kroku nebudem podrobne opisova\u0165 ka\u017ed\u00fa akciu, ale tam, kde m\u00f4\u017eu vznikn\u00fa\u0165 \u0165a\u017ekosti, budem nevyhnutne vysvet\u013eova\u0165.<\/p>\n<p><\/p>\n<p>\u010casto pou\u017e\u00edvam aliasy, preto s\u00fa v tejto \u010dasti predveden\u00e9 pou\u017eit\u00e9 skratky:<\/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>Pl\u00e1n je hotov\u00fd, m\u00f4\u017eeme za\u010da\u0165! A ur\u010dite nezab\u00fadajte na \u201emagick\u00fd Tab\u201c (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">Pozri \u010cas\u0165 1<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h2>Krok 4<\/h2>\n<p><\/p>\n<h3>Pon\u00e1rame sa do kr\u00e1li\u010dej diery Termux:API<\/h3>\n<p><\/p>\n<p><i>API, ko\u013eko sa v tomto slove spojilo pre srdce kod\u00e9ra<\/i><\/p>\n<p><\/p>\n<p>Ak neberieme do \u00favahy t\u00e9mu Termux:API, v\u0161etky na\u0161e kroky by sa dali zhrn\u00fa\u0165 do jednoduch\u00e9ho prepisu nejakej bro\u017e\u00fary typu \u201eLinux pre za\u010diato\u010dn\u00edkov\u201c, ako bolo spr\u00e1vne poznamenan\u00e9 v koment\u00e1roch k prvej \u010dasti.<\/p>\n<p><\/p>\n<p>Na za\u010diatok nain\u0161talujeme Termux:API z Google Play Marketu (po tom je dobr\u00e9 re\u0161tartova\u0165 Termux):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/415e25a8ddefc5d4f1741c97d742eeb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Potom mus\u00edme nain\u0161talova\u0165 bal\u00edk API v konzole Termuxu:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg # Nezab\u00fadame na aliasy\napt install termux-api<\/code><\/pre>\n<p><\/p>\n<p>Na experimenty pou\u017e\u00edvam Android 5.1.1, pre vlastn\u00edkov Androidu 7 treba \u201eochr\u00e1ni\u0165\u201c Termux: API, vst\u00fapen\u00edm do 'Nastavenia' &gt; 'Chr\u00e1nen\u00e9 aplik\u00e1cie', inak bud\u00fa volania API, ako napr\u00edklad <code>termux-battery-status<\/code>, uviaznu. (Pozri. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">wiki projektu<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p>Teraz sa oplat\u00ed bli\u017e\u0161ie spozna\u0165 z\u00edskan\u00e9 mo\u017enosti. Najnov\u0161\u00ed a podrobn\u00fd opis Termux:API n\u00e1jdete na <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">wiki projektu<\/a><\/noindex>. Ja sa v\u0161ak pok\u00fasim vybra\u0165 to najilustrat\u00edvnej\u0161ie a najzauj\u00edmavej\u0161ie, \u010do umo\u017en\u00ed nadobudn\u00fa\u0165 prax na samostatn\u00fa pr\u00e1cu v bud\u00facnosti.<\/p>\n<p><\/p>\n<h3>Nieko\u013eko pr\u00edkladov Termux:API <\/h3>\n<p><\/p>\n<ul>\n<li>termux-battery-status<br \/>\nVracia stav bat\u00e9rie<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/9a5f793d1b028905b3ee9ceab0fbcdec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-brightness<br \/>\nNastavuje jas obrazovky od 0 do 255<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/23e5f3726607921d7f52d5d0de543968.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-toast<br \/>\nZobrazuje do\u010dasn\u00fa vyskakovaciu notifik\u00e1ciu<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/5c75ad9b678773801ea9975b23422384.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-torch<br \/>\nZap\u00edna baterku<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7695202f5972e93e5b7a8f4bd952882c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-wifi-scaninfo<br \/>\nVracia inform\u00e1cie o poslednom skenovan\u00ed Wi-Fi siet\u00ed<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/f10669f8e7dff1046ab4f9b7d68228e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ul>\n<p><\/p>\n<p>Nie je \u0165a\u017ek\u00e9 si v\u0161imn\u00fa\u0165, \u017ee vr\u00e1ten\u00e9 hodnoty s\u00fa re\u0165azce, slovn\u00edky, zoznamy slovn\u00edkov, teda typy d\u00e1t, s ktor\u00fdmi Python v\u00fdborne pracuje, tak\u017ee na\u0161\u00edm \u010fal\u0161\u00edm krokom bude jeho nain\u0161talovanie.<\/p>\n<p><\/p>\n<h2>Krok 5<\/h2>\n<p><\/p>\n<h3>Nain\u0161talujeme Python a nano<\/h3>\n<p><\/p>\n<p>Na in\u0161tal\u00e1ciu Pythona nap\u00ed\u0161eme v termin\u00e1li:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg\napt install python\napt install python2<\/code><\/pre>\n<p><\/p>\n<p>Teraz m\u00e1me nain\u0161talovan\u00e9 Python 2 a 3.<\/p>\n<p><\/p>\n<p>Po\u010das p\u00edsania \u010dl\u00e1nku som objavil \u010fal\u0161\u00ed textov\u00fd editor nano, ktor\u00fd sa mi zap\u00e1\u010dil viac ne\u017e vim, po\u010fme ho nain\u0161talova\u0165:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt install nano<\/code><\/pre>\n<p><\/p>\n<p>Pou\u017e\u00edva sa jednoduch\u0161ie ako vim a nano m\u00e1 priate\u013eskej\u0161\u00ed rozhranie. <i>Na zariaden\u00ed s Androidom je v\u0161ak st\u00e1le pohodlnej\u0161\u00ed vim.<\/i><\/p>\n<p><\/p>\n<h3>HelloWorld na Pythone v Termux<\/h3>\n<p><\/p>\n<p>V podstate by sa tejto polo\u017eky dalo aj vyhn\u00fa\u0165, ale nain\u0161talova\u0165 Python v Termux a nenap\u00edsa\u0165 HelloWorld mi pr\u00edde nevhodn\u00e9.<\/p>\n<p><\/p>\n<p>Nem\u00e1m za cie\u013e u\u010di\u0165 niekoho Python, tak\u017ee t\u00ed, ktor\u00ed nevedia, m\u00f4\u017eu jednoducho skop\u00edrova\u0165 k\u00f3d (alebo za\u010da\u0165 sa u\u010di\u0165 sami, literat\u00fary je dostatok), a t\u00ed, ktor\u00ed vedia, si m\u00f4\u017eu nie\u010do vytvori\u0165 sami. A ja \u201epod r\u00fa\u0161kom\u201c e\u0161te uk\u00e1\u017eem sp\u00f4sob, ako zad\u00e1va\u0165 text v termin\u00e1li bez editora.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;hello-world.py     \n# Ak neuv\u00e1dzate zdroj (pripom\u00ednam cat 1.txt &gt; 2.txt)\n# tak cat bude bra\u0165 \u00fadaje z norm\u00e1lneho vstupn\u00e9ho pr\u00fadu,\n# zjednodu\u0161ene povedan\u00e9, to, \u010do zad\u00e1te z kl\u00e1vesnice.\n\nstr = \u2018Hello, world!\u2019 # prirad\u00edme premennej str hodnotu \"Hello, world!\"\nprint (str) # vyp\u00ed\u0161eme na obrazovku hodnotu z premennej str\n\n# Ctrl + D na ukon\u010denie zad\u00e1vania a ulo\u017eenie s\u00faboru (hello-world.py)\n\npy hello-world.py # spust\u00edme s\u00fabor (py je alias pre python)<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/e9086da1ce27f723681f142dad11d878.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ak ste po\u010das zad\u00e1vania nezaregistrovali chybu a u\u017e ste stla\u010dili Enter, na predch\u00e1dzaj\u00faci riadok sa u\u017e nedostanete, preto ukon\u010dite zad\u00e1vanie stla\u010den\u00edm Ctrl + D (m\u00f4\u017eete to \u00faplne preru\u0161i\u0165 Ctrl + Z) a zopakujte v\u0161etko odznova. Ke\u010f\u017ee sme pou\u017eili \u2018&gt;\u2019, s\u00fabor bude \u00faplne prep\u00edsan\u00fd. Z tohto d\u00f4vodu neodpor\u00fa\u010dam pou\u017e\u00edva\u0165 tak\u00fato met\u00f3du zad\u00e1vania, ak si nie ste ist\u00ed, \u017ee nap\u00ed\u0161ete k\u00f3d naraz bez ch\u00fdb.<\/p>\n<p><\/p>\n<h2>Krok 6<\/h2>\n<p><\/p>\n<h3>Bash skripty<\/h3>\n<p><\/p>\n<p>Bash skripty s\u00fa skvel\u00fdm sp\u00f4sobom, ako automatizova\u0165 pr\u00e1cu s termin\u00e1lom. Skript je s\u00fabor s pr\u00edponou .sh (pr\u00edpona nie je nutn\u00e1) obsahuj\u00faci s\u00fabor pr\u00edkazov termin\u00e1lu, pri\u010dom \u010das\u0165 z nich sme u\u017e \u0161tudovali. Tu je <noindex><a rel=\"nofollow\" href=\"https:\/\/tproger.ru\/translations\/bash-cheatsheet\/\">zoznam v\u00e4\u010d\u0161iny pr\u00edkazov<\/a><\/noindex>, v\u0161etko by malo fungova\u0165, ale majte na pam\u00e4ti, \u017ee toto je zoznam pre \u201edospel\u00fd\u201c Linux, a nie pre Termux, a len <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/325522\/\">skvel\u00fd materi\u00e1l o bash skriptoch<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Pomocou skriptov m\u00f4\u017eeme automatizova\u0165 prakticky v\u0161etky monot\u00f3nne \u010dinnosti. Nap\u00ed\u0161eme jednoduch\u00fd bash skript, ktor\u00fd vypisuje hodnotu z premennej, ktor\u00fa s\u00e1m vytvoril; ja op\u00e4\u0165 vyu\u017eijem cat, vy m\u00f4\u017eete pou\u017ei\u0165 norm\u00e1lny textov\u00fd editor, a t\u00ed, ktor\u00ed sa chc\u00fa trocha potr\u00e1pi\u0165, m\u00f4\u017eu pou\u017ei\u0165 echo.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;test.sh\n\nexport str=\"Ahoj, Habr!\"\n# export vytv\u00e1ra premenn\u00fa str\n# a prira\u010fuje jej hodnotu \"Ahoj, Habr!\"\n# Ned\u00e1vajte medzery pred a za '='\n\necho $str # Pre pr\u00edstup k premenn\u00fdm pred nimi sa uv\u00e1dza '$'\n\n# Ctrl + D\n\n# .\/test.sh na spustenie skriptu, ale ak to teraz urob\u00edte, nastane chyba\n# na odstr\u00e1nenie chyby je potrebn\u00e9 urobi\u0165 s\u00fabor test.sh vykonate\u013en\u00fdm\n\nchmod +x test.sh\n# chmod men\u00ed pr\u00edstupov\u00e9 pr\u00e1va (+ prida\u0165 \/ - odstr\u00e1ni\u0165)\n# \u2018+x\u2019 znamen\u00e1, \u017ee rob\u00edme s\u00fabor vykonate\u013en\u00fdm\n\n.\/test.sh # Sp\u00fa\u0161\u0165ame vykon\u00e1vanie n\u00e1\u0161ho skriptu<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7c56f1aaf938a711f3a30dd3eed3eec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3>Bash skript s Termux:API<\/h3>\n<p><\/p>\n<p>Nap\u00ed\u0161me u\u017e nie\u010do odli\u0161n\u00e9 od zn\u00e1mych HelloWorld, ale rovnako zbyto\u010dn\u00e9. N\u00e1\u0161 skript bude:<\/p>\n<p><\/p>\n<ol>\n<li>vykon\u00e1va\u0165 po\u017eiadavku API termux-battery-status<\/li>\n<li>ulo\u017ei\u0165 z\u00edskan\u00e9 \u00fadaje do s\u00faboru test.txt<\/li>\n<li>vypisova\u0165 \u00fadaje zo s\u00faboru na obrazovku<\/li>\n<li>vykona\u0165 predt\u00fdm naprogramovan\u00fd program hello-world.py<\/li>\n<li>z\u00edskan\u00e9 \u00fadaje z programu zap\u00edsa\u0165 do s\u00faboru test.txt<\/li>\n<li>vypisova\u0165 \u00fadaje zo s\u00faboru na obrazovku<\/li>\n<li>presun\u00fa\u0165 \u00fadaje zo s\u00faboru do schr\u00e1nky<\/li>\n<li>vypisova\u0165 na obrazovku obsah schr\u00e1nky<\/li>\n<li>zobrazi\u0165 vyskakovaciu spr\u00e1vu s \u00fadajmi zo schr\u00e1nky<\/li>\n<\/ol>\n<p><\/p>\n<p>Najprv si vytvor\u00edme prie\u010dinok na pr\u00e1cu a skop\u00edrujeme tam hello-world.py ako test.py, vytvor\u00edme v tomto prie\u010dinku s\u00fabory test.sh a 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 vytv\u00e1ra s\u00fabory\n\nchmod +x test.sh<\/code><\/pre>\n<p><\/p>\n<p>Teraz ak\u00fdmko\u013evek vhodn\u00fdm sp\u00f4sobom zap\u00ed\u0161eme skript do s\u00faboru test.sh:<\/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>Teraz sa nach\u00e1dzaj\u00fac v prie\u010dinku bashscript nap\u00ed\u0161eme <code>.\/test.sh<\/code> pozorujeme v termin\u00e1li na Android zariaden\u00ed:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokom (\u010cas\u0165 2)\" src=\"\/wp-content\/uploads\/2019\/03\/44c6632c7a3903dad1113017dc81ee61.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nap\u00edsali sme pl\u00e1novan\u00fd bash skript. M\u00f4\u017eeme obohati\u0165 jeho v\u00fdstup o inform\u00e1cie o vykon\u00e1van\u00ed ka\u017ed\u00e9ho kroku (pomocou echo), to nech\u00e1m na \u010ditate\u013eov.<\/p>\n<p><\/p>\n<h2>Krok 7<\/h2>\n<p><\/p>\n<h3>Urobme aspo\u0148 nie\u010do u\u017eito\u010dn\u00e9<\/h3>\n<p><\/p>\n<p><i>Relat\u00edvne u\u017eito\u010dn\u00e9<\/i><\/p>\n<p><\/p>\n<p>Vytvor\u00edme technick\u00fa \u00falohu<br \/>\nAplik\u00e1cia by mala po spusten\u00ed umiestni\u0165 do schr\u00e1nky n\u00e1hodn\u00fd riadok zo s\u00faboru a informova\u0165 o tom vyskakovacou spr\u00e1vou.<\/p>\n<p><\/p>\n<p>Za z\u00e1klad vezmeme bash skript, n\u00e1hodn\u00fd riadok zo s\u00faboru budeme z\u00edskava\u0165 pomocou podprogramu v Pythone. Vypracujeme pl\u00e1n pr\u00e1ce skriptu:<\/p>\n<p><\/p>\n<ol>\n<li>Spusti\u0165 podprogram<\/li>\n<li>Preneste v\u00fdsledok podprogramu do schr\u00e1nky<\/li>\n<li>Zobrazte vyskakovaciu spr\u00e1vu<\/li>\n<\/ol>\n<p><\/p>\n<p>Definujme n\u00e1zvy adres\u00e1ra a s\u00faborov aplik\u00e1cie:<\/p>\n<p><\/p>\n<ul>\n<li>adres\u00e1r rndstr v domovskom adres\u00e1ri\n<ul>\n<li>source \u2014 s\u00fabor, z ktor\u00e9ho budeme bra\u0165 riadky<\/li>\n<li>rndstr.py \u2014 podprogram, ktor\u00fd zobrazuje n\u00e1hodn\u00fd riadok zo s\u00faboru source v konzole<\/li>\n<li>rndstr.sh \u2014 s\u00fabor skriptu<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Vytv\u00e1rame adres\u00e1r aplik\u00e1cie a pres\u00favame sa do\u0148ho, kde vytvor\u00edme s\u00fabory.<\/p>\n<p><\/p>\n<p>Prv\u00e9 dva body pl\u00e1nu skriptu m\u00f4\u017eeme spoji\u0165 do pipeline, a nakoniec, pomocou Termux:API dostaneme:<\/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>Do s\u00faboru source m\u00f4\u017eete vlo\u017ei\u0165 ak\u00fdko\u013evek text logicky rozdelen\u00fd na riadky, rozhodol som sa vlo\u017ei\u0165 aforizmy:<\/p>\n<p>\n<b class=\"spoiler_title\">V\u00fdpis s\u00faboru sourse<\/b><\/p>\n<pre><code class=\"plaintext\">\u00daprimnos\u0165 nie je pravda. L. Lavel\nTrpelivos\u0165 a zdr\u017eanlivos\u0165. Epikt\u00e9t\nNoble je len to, \u010do je bezinteresn\u00e9. J. La Bruy\u00e8re\nBu\u010f rozv\u00e1\u017ene odv\u00e1\u017eny. B. Graci\u00e1n\nDobrota je lep\u0161ia ako kr\u00e1sa. G. Heine\nPre ve\u013ek\u00e9 \u010diny je potrebn\u00e1 ne\u00fanavn\u00e1 vytrvalos\u0165. F. Voltaire\nAk chce\u0161, aby ti st\u00e1le vych\u00e1dzali v \u00fastrety, sl\u00fa\u017e si s\u00e1m. B. Franklin\nNadmierna skromnos\u0165 je ni\u010d in\u00e9 ako skryt\u00e1 p\u00fdcha. A. Ch\u00e9nier\nVe\u013emi inteligentn\u00fdm \u013eu\u010fom sa prest\u00e1va d\u00f4verova\u0165, ak vidia ich rozpak. F. Nietzsche\nChudoba ukazuje na nedostatok prostriedkov, nie na nedostatok u\u0161\u013eachtilosti. D. Boccaccio\nTreba si d\u00e1va\u0165 pozor, aby skromnos\u0165 nepre\u0161la do pon\u00ed\u017eenia. A. Bakihanov\nKto sa vzd\u00e1 mnoh\u00e9ho, m\u00f4\u017ee si dovoli\u0165 mnoh\u00e9. J. Chardon\nKe\u010f n\u00e1m zaplatia za u\u0161\u013eachtil\u00fd \u010din, ten n\u00e1m ber\u00fa. N. Chamfort\nNedosta\u0165 v\u00f4bec - nie je stra\u0161n\u00e9, ale pr\u00eds\u0165 o to, \u010do m\u00e1me, je ur\u00e1\u017eliv\u00e9. Klaudius Elian\nJe \u013eah\u0161ie trpezlivo zn\u00e1\u0161a\u0165 to, \u010do nem\u00f4\u017eeme opravi\u0165. Hor\u00e1c\nUnavuje\u0161 sa \u010daka\u0165, ale ako by bolo hor\u0161ie, keby nebolo na \u010do \u010daka\u0165. B. Shaw\nV\u0161etko prich\u00e1dza v\u010das, ak sa \u013eudia dok\u00e1\u017eu \u010daka\u0165. F. Rabelais\nSvojou trpezlivos\u0165ou m\u00f4\u017eeme dosiahnu\u0165 viac ne\u017e silou. E. Burke\nMus\u00edme vedie\u0165 zn\u00e1\u0161a\u0165 to, \u010domu sa nemo\u017eno vyhn\u00fa\u0165. M. Montaigne\nKto je v \u010dine odv\u00e1\u017eny, toho slov\u00e1 nevypla\u0161ia. Sofokles\nNem\u00e1m r\u00e1d bojova\u0165, r\u00e1d v\u00ed\u0165az\u00edm. B. Shaw\nPrenasledovan\u00fd a pritla\u010den\u00fd k m\u00faru, sa ma\u010dka men\u00ed na tigra. M. Cervantes\nD\u00f4stojn\u00fd \u010dlovek nekr\u00e1\u010da po stop\u00e1ch in\u00fdch \u013eud\u00ed. Konf\u00facius\nVe\u013ek\u00fd rozum prejav\u00ed svoju silu nielen v umen\u00ed myslie\u0165, ale aj v umen\u00ed \u017ei\u0165. R. Emerson\nSl\u00e1va je nev\u00fdhodn\u00fd tovar. Stoj\u00ed ve\u013ea, zle sa uchov\u00e1va. O. Balzac\nZdr\u017eanlivos\u0165 a primeranos\u0165 v rozhovoroch maj\u00fa v\u00e4\u010d\u0161iu hodnotu ako v\u00fdre\u010dnos\u0165. F. Bacon\nKto nevie ml\u010da\u0165, ten ani nie je schopn\u00fd hovori\u0165. Seneca Mlad\u0161\u00ed\nDobr\u00e9 spr\u00e1vanie spo\u010d\u00edva v mal\u00fdch obetiach. F. Chesterfield\nDobr\u00fd \u010dlovek nie je ten, kto vie robi\u0165 dobro, ale ten, kto nevie robi\u0165 zlo. V. K\u013e\u00fa\u010devsk\u00fd\nNepron\u00e1\u0161aj neopravite\u013en\u00e9 s\u00fady! August\u00edn\nNi\u010d prive\u013ea! Sol\u00f3n<\/code><\/pre>\n<p><\/p>\n<p>Zost\u00e1va n\u00e1m vytvori\u0165 podprogram, ktor\u00fd extrahuje n\u00e1hodn\u00fd riadok zo s\u00faboru source.<br \/>\nPo\u010fme si rozp\u00edsa\u0165 algoritmus fungovania podprogramu:<\/p>\n<p><\/p>\n<ol>\n<li>Otvor\u00edme s\u00fabor source<\/li>\n<li>Spo\u010d\u00edtame po\u010det riadkov v otvorenom s\u00fabore<\/li>\n<li>Zatvor\u00edme s\u00fabor (nem\u00e1 zmysel ho necha\u0165 otvoren\u00fd na zbyto\u010dne dlh\u00fd \u010das)<\/li>\n<li>Generujeme n\u00e1hodn\u00e9 cel\u00e9 \u010d\u00edslo v r\u00e1mci po\u010dtu riadkov s\u00faboru source<\/li>\n<li>Otvor\u00edme s\u00fabor source<\/li>\n<li>Vytiahneme riadok s \u010d\u00edslom z n\u00e1hodne vygenerovan\u00e9ho \u010d\u00edsla<\/li>\n<li>Zatvor\u00edme s\u00fabor<\/li>\n<\/ol>\n<p><\/p>\n<p>Implementujeme algoritmus v Pythone (p\u00ed\u0161em pre Python 3.7):<\/p>\n<p><\/p>\n<pre><code class=\"python\">import random  # importujeme na generovanie n\u00e1hodn\u00fdch \u010d\u00edsel\nimport os  # na z\u00edskanie cesty\n\npath = os.path.abspath(__file__)  # z\u00edskame \u00fapln\u00fa cestu k s\u00faboru rndstr.py\npath = os.path.dirname(path)  # prevedieme na cestu k prie\u010dinku\npath = path + 'source'  # prevedieme na cestu k s\u00faboru source\n\nf = open(path)  # otvor\u00edme s\u00fabor\ni = 0  # vynulujeme po\u010d\u00edtadlo\nfor str in f: i+=1  # po\u010d\u00edtame riadky s\u00faboru\nf.close  # zatvor\u00edme s\u00fabor\n\nj = int(round(i * random.random()))  # generujeme cel\u00e9 n\u00e1hodn\u00e9 \u010d\u00edslo od 0 do i\n\nf = open(path)  # otvor\u00edme s\u00fabor\ni = 0  # vynulujeme po\u010d\u00edtadlo\nfor str in f:  # prech\u00e1dzame riadkami s\u00faboru\n    if i == j:  # ak je po\u010d\u00edtadlo riadkov rovn\u00e9 vygenerovan\u00e9mu \u010d\u00edslu\n        print (str, end='')  # vytla\u010d\u00edme riadok bez prechodu na nov\u00fa\n        break  # vyst\u00fapime z cyklu\n    i+=1  # zvy\u0161ujeme po\u010d\u00edtadlo o 1\nf.close  # zatvor\u00edme s\u00fabor<\/code><\/pre>\n<p><\/p>\n<p>Potom, \u010do boli s\u00fabory vytvoren\u00e9 a zap\u00edsan\u00e9, je potrebn\u00e9 nastavi\u0165 pr\u00e1va na vykon\u00e1vanie s\u00faboru <code>rndstr.sh<\/code>, a vytvori\u0165 alias pre r\u00fdchle spustenie.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias rnst=\"~\/rndstr\/rndstr.sh\"<\/code><\/pre>\n<p><\/p>\n<p>Teraz, ke\u010f do termin\u00e1lu zad\u00e1me <code>rnst<\/code> dostaneme do schr\u00e1nky n\u00e1hodn\u00fd aforizmus, ktor\u00fd m\u00f4\u017eeme napr\u00edklad vyu\u017ei\u0165 v komunik\u00e1cii.<\/p>\n<p><\/p>\n<p>Nap\u00edsali sme aspo\u0148 nie\u010do u\u017eito\u010dn\u00e9. Relat\u00edvne u\u017eito\u010dn\u00e9.<\/p>\n<p><\/p>\n<h3>P.s.<\/h3>\n<p><\/p>\n<p>\u00damyselne som na poslednom kroku nezobrazoval screenshoty a podrobne nerozoberal niektor\u00e9 akcie, pop\u00edsal som iba obsah s\u00faborov, aby \u010ditatelia mali mo\u017enos\u0165 pracova\u0165 samostatne.<\/p>\n<p><\/p>\n<p>Na tomto \u201eTermux krok za krokom\u201c si mysl\u00edm, \u017ee by sme mali skon\u010di\u0165. Samozrejme, \u017ee s\u00fa to len prv\u00e9 kroky, ale teraz m\u00f4\u017eete pokra\u010dova\u0165 sami.<\/p>\n<p><\/p>\n<p>P\u00f4vodne som pl\u00e1noval uk\u00e1za\u0165 v tomto cykle, ako pou\u017e\u00edva\u0165 nmap, sqlmap, ale aj bez m\u0148a je u\u017e mnoho \u010dl\u00e1nkov na t\u00fato t\u00e9mu. Ak m\u00e1te z\u00e1ujem, aby som pokra\u010doval v cykle \u201eTermux krok za krokom\u201c, ni\u017e\u0161ie je anketa a v koment\u00e1roch m\u00f4\u017eete navrhn\u00fa\u0165, o \u010dom e\u0161te nap\u00edsa\u0165.<\/p>\n<p class=\"for_users_only_msg\">Len registrovan\u00ed pou\u017e\u00edvatelia sa m\u00f4\u017eu z\u00fa\u010dastni\u0165 prieskumu. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Prihl\u00e1ste sa<\/a><\/noindex>, pros\u00edm.<\/p>\n<h2 class=\"default-block__polling-title\">Pokra\u010dova\u0165 v \u201eTermux krok za krokom\u201c?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    \u00c1no<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nie<\/p>\n<\/li>\n<\/ul>\n<p>    Hlasovalo 2 pou\u017e\u00edvate\u013eov. Zdr\u017eal sa nikto.<br \/>\n<br \/>Zdroj: <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.4 - 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.\" \/>\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\/sk\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/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 krok za krokom (\u010cas\u0165 2) | ProHoster","description":"V predch\u00e1dzaj\u00facej \u010dasti sme sa obozn\u00e1mili so z\u00e1kladn\u00fdmi pr\u00edkazmi Termuxu, nastavili SSH pripojenie s PC, nau\u010dili sme sa vytv\u00e1ra\u0165 aliasy a.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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.","og:url":"https:\/\/prohoster.info\/sk\/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":{"focus":[],"additional":[]},"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-08-11 12:50:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/30531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=30531"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/30531\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/22529"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=30531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=30531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=30531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}