{"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\/cs\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","title":{"rendered":"Termux krok za krokem (\u010c\u00e1st 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">p\u0159edchoz\u00ed \u010d\u00e1sti<\/a><\/noindex> sezn\u00e1mili jsme se se z\u00e1kladn\u00edmi p\u0159\u00edkazy Termuxu, nastavili jsme SSH p\u0159ipojen\u00ed k PC, nau\u010dili se vytv\u00e1\u0159et aliasy a nainstalovali n\u011bkolik u\u017eite\u010dn\u00fdch utilit. Tentokr\u00e1t n\u00e1s \u010dek\u00e1 krok je\u0161t\u011b d\u00e1l, spole\u010dn\u011b se:<\/p>\n<p><\/p>\n<ul>\n<li>zkoumat Termux:API<\/li>\n<li>nainstalujeme Python a nano a tak\u00e9 nap\u00ed\u0161eme \u201eHello, world!\u201c v Pythonu<\/li>\n<li>sezn\u00e1m\u00edme se s bash skripty a nap\u00ed\u0161eme skript pou\u017e\u00edvaj\u00edc\u00ed Termux:API<\/li>\n<li>pou\u017eijeme bash skript, Termux:API a Python k naps\u00e1n\u00ed jednoduch\u00e9ho programu <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Jeliko\u017e nyn\u00ed rozum\u00edme, co jednotliv\u00e9 p\u0159\u00edkazy d\u011blaj\u00ed, od p\u0159\u00ed\u0161t\u00edho kroku nebudu podrobn\u011b popisovat ka\u017edou akci, ale tam, kde mohou b\u00fdt pot\u00ed\u017ee, vysv\u011btl\u00edm je jist\u011b.<\/p>\n<p><\/p>\n<p>\u010casto pou\u017e\u00edv\u00e1m aliasy, proto jsou zkr\u00e1cen\u00e9 p\u0159\u00edkazy uveden\u00e9 v t\u00e9to \u010d\u00e1sti zde:<\/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\u016f\u017eeme za\u010d\u00edt! A samoz\u0159ejm\u011b nezapom\u00ednejte na \u201ekouzeln\u00fd Tab\u201c (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">viz \u010d\u00e1st 1<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h2>Krok 4<\/h2>\n<p><\/p>\n<h3>Pono\u0159me se hloub\u011bji do kr\u00e1li\u010d\u00ed nory Termux:API<\/h3>\n<p><\/p>\n<p><i>API, jak mnoho se v tomto slov\u011b spojilo pro srdce kod\u00e9ra<\/i><\/p>\n<p><\/p>\n<p>Pokud se vyhneme t\u00e9matu Termux:API, v\u0161echny na\u0161e kroky by se daly shrnout do jednoduch\u00e9ho p\u0159ehledu n\u011bjak\u00e9 bro\u017eury typu \u201eLinux pro za\u010d\u00e1te\u010dn\u00edky\u201c, jak spr\u00e1vn\u011b bylo poznamen\u00e1no v koment\u00e1\u0159\u00edch k prvn\u00ed \u010d\u00e1sti.<\/p>\n<p><\/p>\n<p>Nejprve nainstalujeme Termux:API z Google Play Marketu (po tom se doporu\u010duje restartovat Termux):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/415e25a8ddefc5d4f1741c97d742eeb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>D\u00e1le pot\u0159ebujeme nainstalovat bal\u00ed\u010dek API v konzole Termuxu:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg # Nezapom\u00ednejte na aliasy\napt install termux-api<\/code><\/pre>\n<p><\/p>\n<p>K experiment\u016fm pou\u017e\u00edv\u00e1m Android 5.1.1, pro majitele Androidu 7 je pot\u0159eba \"ochr\u00e1nit\" Termux: API, p\u0159ejd\u011bte do 'Nastaven\u00ed' &gt; 'Ochr\u00e1n\u011bn\u00e9 aplikace', jinak budou vol\u00e1n\u00ed API, jako nap\u0159\u00edklad <code>termux-battery-status<\/code>, z\u016fst\u00e1vat viset. (Viz <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">wiki projektu<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p>Nyn\u00ed je \u010das se bl\u00ed\u017ee sezn\u00e1mit s z\u00edskan\u00fdmi mo\u017enostmi. Nejnov\u011bj\u0161\u00ed a nejpodrobn\u011bj\u0161\u00ed popis Termux:API najdete na <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">wiki projektu<\/a><\/noindex>. Sna\u017e\u00edm se vybrat to nejp\u0159ehledn\u011bj\u0161\u00ed a nejzaj\u00edmav\u011bj\u0161\u00ed, co v\u00e1m pom\u016f\u017ee z\u00edskat praxi pro samostatnou pr\u00e1ci v budoucnu.<\/p>\n<p><\/p>\n<h3>N\u011bkolik p\u0159\u00edklad\u016f Termux:API <\/h3>\n<p><\/p>\n<ul>\n<li>termux-battery-status<br \/>\nVrac\u00ed stav baterie<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 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 krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/23e5f3726607921d7f52d5d0de543968.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-toast<br \/>\nZobrazuje do\u010dasn\u00e9 vyskakovac\u00ed ozn\u00e1men\u00ed<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/5c75ad9b678773801ea9975b23422384.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-torch<br \/>\nZap\u00edn\u00e1 sv\u00edtilnu<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7695202f5972e93e5b7a8f4bd952882c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-wifi-scaninfo<br \/>\nVrac\u00ed informace o posledn\u00edm skenov\u00e1n\u00ed Wi-Fi s\u00edt\u00ed<br \/>\n<img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/f10669f8e7dff1046ab4f9b7d68228e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ul>\n<p><\/p>\n<p>Nen\u00ed t\u011b\u017ek\u00e9 si v\u0161imnout, \u017ee vracen\u00e9 hodnoty jsou \u0159et\u011bzce, slovn\u00edky, seznamy slovn\u00edk\u016f, tedy datov\u00e9 typy, se kter\u00fdmi si Python skv\u011ble poradi, a tak jej dal\u0161\u00edm krokem nainstalujeme.<\/p>\n<p><\/p>\n<h2>Krok 5<\/h2>\n<p><\/p>\n<h3>Nainstalujeme Python a nano<\/h3>\n<p><\/p>\n<p>Pro instalaci Pythonu nap\u00ed\u0161eme v termin\u00e1lu:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg\napt install python\napt install python2<\/code><\/pre>\n<p><\/p>\n<p>Nyn\u00ed m\u00e1me nainstalovan\u00e9 Python 2 a 3.<\/p>\n<p><\/p>\n<p>B\u011bhem pr\u00e1ce na \u010dl\u00e1nku jsem objevil dal\u0161\u00ed textov\u00fd editor nano, kter\u00fd se mi l\u00edb\u00ed v\u00edce ne\u017e vim, poj\u010fme ho nainstalovat:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt install nano<\/code><\/pre>\n<p><\/p>\n<p>Pou\u017e\u00edv\u00e1n\u00ed je jednodu\u0161\u0161\u00ed ne\u017e vim, a nano m\u00e1 p\u0159\u00edv\u011btiv\u011bj\u0161\u00ed rozhran\u00ed. <i>Na za\u0159\u00edzen\u00ed Android je v\u0161ak p\u0159ece jen pohodln\u011bj\u0161\u00ed vim.<\/i><\/p>\n<p><\/p>\n<h3>HelloWorld na Pythonu v Termuxu<\/h3>\n<p><\/p>\n<p>V podstat\u011b by bylo mo\u017en\u00e9 se bez tohoto bodu obej\u00edt, ale nainstalovat Python v Termuxu a nenapsat HelloWorld, to mi p\u0159ijde nevhodn\u00e9.<\/p>\n<p><\/p>\n<p>Nem\u00e1m v \u00famyslu nikoho u\u010dit Pythonu, tak\u017ee ti, kdo neznaj\u00ed, mohou jednodu\u0161e zkop\u00edrovat k\u00f3d (nebo za\u010d\u00edt studovat sami, nakonec literatury je dost), a ti, kdo to um\u00ed, mohou tak\u00e9 n\u011bco vytvo\u0159it. A j\u00e1 \u201epod \u0161um\u201c tak\u00e9 uk\u00e1\u017eu, jak zad\u00e1vat text v termin\u00e1lu bez editoru.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;hello-world.py\n# Pokud neud\u00e1te zdroj (p\u0159ipom\u00edn\u00e1m cat 1.txt &gt; 2.txt)\n# pak cat vezme data z standardn\u00edho vstupu,\n# jednodu\u0161e \u0159e\u010deno, to, co se zadalo z kl\u00e1vesnice.\n\nstr = 'Hello, world!' # p\u0159i\u0159azujeme prom\u011bnn\u00e9 str hodnotu \"Hello, world!\"\nprint (str) # vyp\u00ed\u0161eme na obrazovku hodnotu z prom\u011bnn\u00e9 str\n\n# Ctrl + D ukon\u010d\u00ed zad\u00e1v\u00e1n\u00ed a zap\u00ed\u0161e soubor (hello-world.py)\n\npy hello-world.py # spust\u00edme soubor (py je alias pro python)<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/e9086da1ce27f723681f142dad11d878.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokud b\u011bhem zad\u00e1v\u00e1n\u00ed jste si nev\u0161imli chyby a u\u017e jste stiskli Enter, nelze se vr\u00e1tit na p\u0159edchoz\u00ed \u0159\u00e1dek, pro to mus\u00edte ukon\u010dit zad\u00e1v\u00e1n\u00ed stiskem Ctrl + D (m\u016f\u017eete tak\u00e9 zcela p\u0159eru\u0161it Ctrl + Z) a v\u0161e opakovat od za\u010d\u00e1tku. Jeliko\u017e jsme pou\u017eili '&gt;', soubor bude kompletn\u011b p\u0159eps\u00e1n. Z tohoto d\u016fvodu nedoporu\u010duji pou\u017e\u00edvat tuto metodu zad\u00e1v\u00e1n\u00ed, pokud si nejste jisti, \u017ee nap\u00ed\u0161ete k\u00f3d okam\u017eit\u011b bez chyb.<\/p>\n<p><\/p>\n<h2>Krok 6<\/h2>\n<p><\/p>\n<h3>Bash skripty<\/h3>\n<p><\/p>\n<p>Bash skripty jsou skv\u011bl\u00fd zp\u016fsob, jak automatizovat pr\u00e1ci s termin\u00e1lem. Skript je soubor s p\u0159\u00edponou .sh (p\u0159\u00edpona nen\u00ed povinn\u00e1), obsahuj\u00edc\u00ed sadu p\u0159\u00edkaz\u016f termin\u00e1lu, z nich\u017e n\u011bkter\u00e9 jsme ji\u017e probrali. Tady <noindex><a rel=\"nofollow\" href=\"https:\/\/tproger.ru\/translations\/bash-cheatsheet\/\">je seznam v\u011bt\u0161iny p\u0159\u00edkaz\u016f<\/a><\/noindex>, v\u0161e by m\u011blo fungovat, ale m\u011bjte na pam\u011bti, \u017ee tento seznam je pro \u201edosp\u011bl\u00fd\u201c Linux, a ne pro Termux, a tady je prost\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/325522\/\">skv\u011bl\u00fd materi\u00e1l o bash skriptech<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Pomoc\u00ed skript\u016f lze automatizovat prakticky v\u0161echny monot\u00f3nn\u00ed \u00fakoly. Napi\u0161me jednoduch\u00fd bash skript, kter\u00fd vytiskne hodnotu ze sv\u00e9 vlastn\u00ed prom\u011bnn\u00e9, pou\u017eiji op\u011bt cat, ale m\u016f\u017eete pou\u017e\u00edt norm\u00e1ln\u00ed textov\u00fd editor, a ti, kte\u0159\u00ed se cht\u011bj\u00ed procvi\u010dit, mohou pou\u017e\u00edt echo.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;test.sh\n\nexport str=\"Ahoj, Habr!\"\n# export vytvo\u0159\u00ed prom\u011bnnou str\n# a p\u0159i\u0159ad\u00ed ji hodnotu \"Ahoj, Habr!\"\n# Nezapome\u0148te nepou\u017e\u00edvat mezery p\u0159ed a za \u2018=\u2019\n\necho $str # Pro p\u0159\u00edstup k prom\u011bnn\u00fdm p\u0159ed n\u011b um\u00edst\u00edme \u2018$\u2019\n\n# Ctrl + D\n\n# .\/test.sh pro spu\u0161t\u011bn\u00ed skriptu, ale pokud to te\u010f ud\u011bl\u00e1te, objev\u00ed se chyba\n# abyste se chyb\u011b vyhnuli, je t\u0159eba ud\u011blat soubor test.sh spustiteln\u00fdm\n\nchmod +x test.sh\n# chmod m\u011bn\u00ed opr\u00e1vn\u011bn\u00ed (+ p\u0159idat \/ - odebrat)\n# \u2018+x\u2019 znamen\u00e1, \u017ee d\u011bl\u00e1me soubor spustiteln\u00fdm\n\n.\/test.sh # Spou\u0161t\u00edme n\u00e1\u0161 skript<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 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>Napi\u0161me u\u017e n\u011bco jin\u00e9ho ne\u017e proslul\u00e9 HelloWorldy, ale stejn\u011b zbyte\u010dn\u00e9. N\u00e1\u0161 skript bude:<\/p>\n<p><\/p>\n<ol>\n<li>prov\u00e1d\u011bt API po\u017eadavek termux-battery-status<\/li>\n<li>ukl\u00e1dat z\u00edskan\u00e1 data do souboru test.txt<\/li>\n<li>vypisovat data ze souboru na obrazovku<\/li>\n<li>spou\u0161t\u011bt d\u0159\u00edve napsan\u00fd program hello-world.py<\/li>\n<li>z\u00edskan\u00e1 data z programu zapisovat do souboru test.txt<\/li>\n<li>vypisovat data ze souboru na obrazovku<\/li>\n<li>p\u0159esouvat data ze souboru do schr\u00e1nky<\/li>\n<li>vypisovat obsah schr\u00e1nky na obrazovku<\/li>\n<li>vypisovat vyskakovac\u00ed zpr\u00e1vu s daty ze schr\u00e1nky<\/li>\n<\/ol>\n<p><\/p>\n<p>Nejprve vytvo\u0159me adres\u00e1\u0159 pro pr\u00e1ci a zkop\u00edrujme tam hello-world.py jako test.py, vytvo\u0159\u00edme v tomto adres\u00e1\u0159i soubory 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\u00e1\u0159\u00ed soubory\n\nchmod +x test.sh<\/code><\/pre>\n<p><\/p>\n<p>Nyn\u00ed jak\u00fdmkoli pohodln\u00fdm zp\u016fsobem zap\u00ed\u0161eme skript do souboru 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>Nyn\u00ed se v adres\u00e1\u0159i bashscript p\u00ed\u0161eme <code>.\/test.sh<\/code> pozorujeme v termin\u00e1lu na za\u0159\u00edzen\u00ed Android:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux krok za krokem (\u010c\u00e1st 2)\" src=\"\/wp-content\/uploads\/2019\/03\/44c6632c7a3903dad1113017dc81ee61.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tak jsme napsali napl\u00e1novan\u00fd bash skript. M\u016f\u017eeme ho doplnit v\u00fdpisem informac\u00ed o proveden\u00ed ka\u017ed\u00e9 akce do konzole (pomoc\u00ed echo), to nech\u00e1m na \u010dten\u00e1\u0159\u00edch.<\/p>\n<p><\/p>\n<h2>Krok 7<\/h2>\n<p><\/p>\n<h3>Ud\u011bl\u00e1me n\u011bco u\u017eite\u010dn\u00e9ho<\/h3>\n<p><\/p>\n<p><i>Relativn\u011b u\u017eite\u010dn\u00e9<\/i><\/p>\n<p><\/p>\n<p>Sestav\u00edme technick\u00e9 zad\u00e1n\u00ed<br \/>\nAplikace by m\u011bla po spu\u0161t\u011bn\u00ed vlo\u017eit do schr\u00e1nky n\u00e1hodn\u00fd \u0159et\u011bzec ze souboru a upozornit na to vyskakovac\u00ed zpr\u00e1vou.<\/p>\n<p><\/p>\n<p>Za z\u00e1klad vezmeme bash skript, n\u00e1hodn\u00fd \u0159et\u011bzec ze souboru budeme z\u00edsk\u00e1vat pomoc\u00ed podprogramu v Pythonu. Sestav\u00edme pl\u00e1n pr\u00e1ce skriptu:<\/p>\n<p><\/p>\n<ol>\n<li>Spustit podprogram<\/li>\n<li>P\u0159en\u00e9st v\u00fdsledek podprogramu do schr\u00e1nky<\/li>\n<li>Zobrazit vyskakovac\u00ed zpr\u00e1vu<\/li>\n<\/ol>\n<p><\/p>\n<p>Ur\u010d\u00edme n\u00e1zvy adres\u00e1\u0159e a soubor\u016f aplikace:<\/p>\n<p><\/p>\n<ul>\n<li>slo\u017eka rndstr v domovsk\u00e9m adres\u00e1\u0159i\n<ul>\n<li>source \u2014 soubor, ze kter\u00e9ho budeme nab\u00edrat \u0159\u00e1dky<\/li>\n<li>rndstr.py \u2014 podprogram, kter\u00fd vypisuje n\u00e1hodn\u00fd \u0159\u00e1dek ze souboru source do konzole<\/li>\n<li>rndstr.sh \u2014 soubor skriptu<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Vytv\u00e1\u0159\u00edme adres\u00e1\u0159 aplikace a po p\u0159echodu do n\u011bj tam vytv\u00e1\u0159\u00edme soubory.<\/p>\n<p><\/p>\n<p>Prvn\u00ed dva body pl\u00e1nu skriptu lze spojit pomoc\u00ed pipe, co\u017e v\u00fdsledn\u011b, pou\u017e\u00edvaj\u00edc\u00ed Termux:API, vypad\u00e1 takto:<\/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 souboru source m\u016f\u017eete um\u00edstit jak\u00fdkoliv text logicky rozd\u011blen\u00fd na \u0159\u00e1dky, rozhodl jsem se vlo\u017eit aforismy:<\/p>\n<p>\n<b class=\"spoiler_title\">V\u00fdpis souboru source<\/b><\/p>\n<pre><code class=\"plaintext\">Up\u0159\u00edmnost nen\u00ed pravda. L. Lavelle\nVydr\u017e a ovl\u00e1dej se. Epikt\u00e9t\nNoble je pouze to, co je nezi\u0161tn\u00e9. J. La Bruy\u00e8re\nBu\u010f rozumn\u011b odv\u00e1\u017en\u00fd. B. Gracian\nLaskavost je lep\u0161\u00ed ne\u017e kr\u00e1sa. G. Heine\nPro velk\u00e9 skutky je nezbytn\u00e1 ne\u00fanavn\u00e1 vytrvalost. F. Voltaire\nPokud chce\u0161, aby ti v\u017edy vyhov\u011bli, slou\u017e si s\u00e1m. B. Franklin\nNadm\u011brn\u00e1 skromnost je nic jin\u00e9ho ne\u017e skryt\u00e1 p\u00fdcha. A. Cha\u00fcnee\nVelice chytr\u00fdm lidem za\u010d\u00ednaj\u00ed nev\u011b\u0159it, kdy\u017e vid\u00ed jejich rozpa\u010ditost. F. Nietzsche\nChudoba ukazuje na nedostatek prost\u0159edk\u016f, nikoli na nedostatek u\u0161lechtilosti. D. Boccaccio\nMus\u00edme se vyvarovat p\u0159eh\u00e1n\u011bn\u00ed skromnosti do m\u00edry pon\u00ed\u017een\u00ed. A. Bakihanov\nKdo se vzd\u00e1 mnoh\u00e9ho, m\u016f\u017ee si dovolit mnoh\u00e9. J. Chardon\nKdy\u017e n\u00e1m plat\u00ed za u\u0161lechtil\u00fd \u010din, ten n\u00e1m byl odejmut. N. Chamfort\nNeb\u00fdt ni\u010deho - nen\u00ed d\u011bsiv\u00e9, ale p\u0159ij\u00edt o to, co m\u00e1me, je o\u0161kliv\u00e9. Klaudius Elian\nJe snaz\u0161\u00ed trp\u011bliv\u011b sn\u00e1\u0161et to, co nem\u016f\u017eeme napravit. Horatius\nUnavuje t\u011b \u010dek\u00e1n\u00ed, ale jak\u00e9 by to bylo hor\u0161\u00ed, kdyby nebylo na co \u010dekat. B. Shaw\nV\u0161echno p\u0159ich\u00e1z\u00ed v prav\u00fd \u010das, pokud lid\u00e9 um\u011bj\u00ed \u010dekat. F. Rabelais\nNa\u0161im trp\u011bn\u00edm m\u016f\u017eeme dos\u00e1hnout v\u00edce ne\u017e silou. E. Burke\nMus\u00edme um\u011bt sn\u00e1\u0161et to, \u010demu se nelze vyhnout. M. Montaigne\nKdo je odv\u00e1\u017en\u00fd ve v\u011bci, toho slova neodrad\u00ed. Sofokl\u00e9s\nNerad\u00edm se b\u00edt, rad\u011bji v\u00edt\u011bz\u00edm. B. Shaw\nUra\u017een\u00e1 a p\u0159itla\u010den\u00e1 ko\u010dka se m\u011bn\u00ed v tygra. M. Cervantes\nD\u016fstojn\u00fd \u010dlov\u011bk nekr\u00e1\u010d\u00ed ve stop\u00e1ch ostatn\u00edch lid\u00ed. Konfucius\nVelk\u00fd rozum prok\u00e1\u017ee svou s\u00edlu nejen v um\u011bn\u00ed myslet, ale i v um\u011bn\u00ed \u017e\u00edt. R. Emerson\nSl\u00e1va je nev\u00fdhodn\u00fd majetek. Je drah\u00e1, ale \u0161patn\u011b se udr\u017euje. O. Balzac\nZdr\u017eenlivost a vhodnost v rozhovorech stoj\u00ed v\u00edce ne\u017e eloquence. F. Bacon\nKdo neum\u00ed ml\u010det, ten ani hovo\u0159it nedok\u00e1\u017ee. Seneca Mlad\u0161\u00ed\nDobr\u00e9 chov\u00e1n\u00ed spo\u010d\u00edv\u00e1 v mal\u00fdch ob\u011btech. F. Chesterfield\nDobr\u00fd \u010dlov\u011bk nen\u00ed ten, kdo um\u00ed konat dobro, ale ten, kdo neum\u00ed konat zlo. V. Klyuchevsky\nNepron\u00e1\u0161ejte nevratn\u00e1 soudy! Augustin\nNic p\u0159\u00edli\u0161! Sol\u00f3n<\/code><\/pre>\n<p><\/p>\n<p>Zb\u00fdv\u00e1 n\u00e1m vytvo\u0159it podprogram, kter\u00fd vyt\u00e1hne n\u00e1hodn\u00fd \u0159\u00e1dek z souboru source.<br \/>\nVypracujeme algoritmus pro pr\u00e1ci podprogramu:<\/p>\n<p><\/p>\n<ol>\n<li>Otev\u00edr\u00e1me soubor source<\/li>\n<li>Po\u010d\u00edt\u00e1me po\u010det \u0159\u00e1dk\u016f v otev\u0159en\u00e9m souboru<\/li>\n<li>Zav\u00edr\u00e1me soubor (nemus\u00edme ho zbyte\u010dn\u011b dr\u017eet otev\u0159en\u00fd)<\/li>\n<li>Generujeme n\u00e1hodn\u00e9 cel\u00e9 \u010d\u00edslo v rozsahu po\u010dtu \u0159\u00e1dk\u016f souboru source<\/li>\n<li>Otev\u00edr\u00e1me soubor source<\/li>\n<li>Vytiskneme \u0159\u00e1dek pod \u010d\u00edslem generovan\u00e9ho \u010d\u00edsla<\/li>\n<li>Zav\u0159eme soubor<\/li>\n<\/ol>\n<p><\/p>\n<p>Realizujeme algoritmus v Pythonu (p\u00ed\u0161u pod Python 3.7):<\/p>\n<p><\/p>\n<pre><code class=\"python\">import random  # importujeme pro generov\u00e1n\u00ed n\u00e1hodn\u00fdch \u010d\u00edsel\nimport os  # pro z\u00edsk\u00e1n\u00ed cesty\n\npath = os.path.abspath(__file__)  # z\u00edsk\u00e1me p\u0159\u00edmou cestu k souboru rndstr.py\npath = os.path.dirname(path)  # p\u0159evedeme na cestu k adres\u00e1\u0159i\npath = path + 'source'  # p\u0159evedeme na cestu k souboru source\n\nf = open(path)  # otev\u0159eme soubor\ni = 0  # nulujeme \u010d\u00edta\u010d\nfor str in f: i+=1  # po\u010d\u00edt\u00e1me \u0159\u00e1dky souboru\nf.close  # zav\u0159eme soubor\n\nj = int(round(i * random.random()))  # generujeme cel\u00e9 n\u00e1hodn\u00e9 \u010d\u00edslo od 0 do i\n\nf = open(path)  # otev\u0159eme soubor\ni = 0  # nulujeme \u010d\u00edta\u010d\nfor str in f:  # iterujeme \u0159\u00e1dky ze souboru\n    if i == j:  # pokud je \u010d\u00edta\u010d \u0159\u00e1dk\u016f roven generovan\u00e9mu \u010d\u00edslu\n        print (str, end='')  # vytiskneme \u0159\u00e1dek bez p\u0159echodu na nov\u00fd\n        break  # vyjdeme z cyklu\n    i+=1  # zvy\u0161ujeme \u010d\u00edta\u010d o 1\nf.close  # zav\u0159eme soubor<\/code><\/pre>\n<p><\/p>\n<p>Po vytvo\u0159en\u00ed a zaps\u00e1n\u00ed soubor\u016f je t\u0159eba p\u0159id\u011blit souboru pr\u00e1va na spu\u0161t\u011bn\u00ed <code>rndstr.sh<\/code>, a vytvo\u0159it alias pro rychl\u00e9 spu\u0161t\u011bn\u00ed.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias rnst=\"~\/rndstr\/rndstr.sh\"<\/code><\/pre>\n<p><\/p>\n<p>Nyn\u00ed, kdy\u017e zad\u00e1me do termin\u00e1lu <code>rnst<\/code> dostaneme do schr\u00e1nky n\u00e1hodn\u00fd aforismus, kter\u00fd nap\u0159\u00edklad m\u016f\u017eeme pou\u017e\u00edt v korespondenci.<\/p>\n<p><\/p>\n<p>T\u00edm jsme napsali alespo\u0148 n\u011bco u\u017eite\u010dn\u00e9ho. Relativn\u011b u\u017eite\u010dn\u00e9ho.<\/p>\n<p><\/p>\n<h3>P.s.<\/h3>\n<p><\/p>\n<p>Z\u00e1m\u011brn\u011b jsem v posledn\u00edm kroku nezahrnul screenshoty a nepodrobn\u011b popsal n\u011bkter\u00e9 kroky, uvedl jsem pouze obsah soubor\u016f, aby m\u011bli \u010dten\u00e1\u0159i mo\u017enost pracovat samostatn\u011b.<\/p>\n<p><\/p>\n<p>Na tomto \u201eTermux krok za krokem\u201c, mysl\u00edm, je \u010das skon\u010dit. Samoz\u0159ejm\u011b, \u017ee toto jsou jen prvn\u00ed kroky, ale nyn\u00ed m\u016f\u017eete pokra\u010dovat sami.<\/p>\n<p><\/p>\n<p>P\u016fvodn\u011b jsem pl\u00e1noval uk\u00e1zat v t\u00e9to s\u00e9rii, jak pou\u017e\u00edvat nmap, sqlmap, ale i bez m\u011b u\u017e existuje spousta \u010dl\u00e1nk\u016f na toto t\u00e9ma. Pokud m\u00e1te z\u00e1jem, abych pokra\u010doval v s\u00e9rii \u201eTermux krok za krokem\u201c, n\u00ed\u017ee je anketa, a v koment\u00e1\u0159\u00edch m\u016f\u017eete navrhnout, o \u010dem je\u0161t\u011b ps\u00e1t.<\/p>\n<p class=\"for_users_only_msg\">Pouze registrovan\u00ed u\u017eivatel\u00e9 se mohou \u00fa\u010dastnit ankety. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">P\u0159ihlaste se<\/a><\/noindex>, pros\u00edm.<\/p>\n<h2 class=\"default-block__polling-title\">Pokra\u010dovat v \u201eTermux krok za krokem\u201c?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ano<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ne<\/p>\n<\/li>\n<\/ul>\n<p>    Hlasovali 2 u\u017eivatel\u00e9. Zdr\u017eel se nikdo.<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.3 - 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\/cs\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 krokem (\u010c\u00e1st 2) | ProHoster","description":"V minul\u00e9 \u010d\u00e1sti jsme se sezn\u00e1mili se z\u00e1kladn\u00edmi p\u0159\u00edkazy Termuxu, nastavili jsme SSH spojen\u00ed s PC, nau\u010dili jsme se vytv\u00e1\u0159et aliasy a.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/30531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=30531"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30531\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/22529"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=30531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=30531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=30531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}