abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 16:23 | Bezpečnostní upozornění

    Zranitelnost v aktualizačním mechanismu WordPress umožňuje útočníkovi zasáhnout do dočasného instalačního adresáře během aktualizace jádra systému. Před aktualizací veřejně dostupného WordPressu dočasně zablokovat HTTP přístup k wp-content/upgrade/, následně aktualizovat a zkontrolovat logy. Postižené verze: WordPress 4.7 až 7.1.3.

    vencour | Komentářů: 0
    dnes 16:11 | Bezpečnostní upozornění

    Alpine Linux zveřejnil podrobnosti o útoku na svůj GitLab a 30. října oznámil obnovení provozu. Útočník se 20.–21. října pokusil zneužít chybu v regulárních výrazech. Exploit způsobil opakované pády workerů a několikrát se dostal do pokročilé fáze. Úspěšné spuštění kódu však nebylo potvrzeno. Fix: Opravený GitLab a současně Ruby 3.3.13, 3.4.12 nebo 4.0.9+, pokud jde o vlastní sestavení či kontejner.

    vencour | Komentářů: 0
    dnes 15:44 | Pozvánky

    Konference OpenAlt 2026 proběhne tento víkend 7. a 8. listopadu na FIT VUT v Brně. Jedná se již o 21. ročník této konference, která propojuje otevřené technologie, svobodný software, hardware a lidi, kteří chtějí věci nejen používat, ale také jim rozumět a měnit je k lepšímu. Více o konferenci v příspěvku OpenAlt 2026: technologie, které dávají svobodu na blogu spolku OpenAlt.

    Ladislav Hagara | Komentářů: 0
    dnes 15:22 | IT novinky

    Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 16 GB varianty Raspberry Pi o 80 dolarů a 16 GB varianty Raspberry Pi Compute Module 5 o 40 dolarů. Cena Raspberry Pi 500+ se nemění.

    Ladislav Hagara | Komentářů: 0
    dnes 15:11 | IT novinky

    Francouzské Národní shromáždění přijalo 30. října 2026 poměrem 11 hlasů pro, 10 proti a 14 abstencí pozměňovací návrh I-1358 ke státnímu rozpočtu na rok 2027, který zavádí daň z objemu dat doručovaných uživatelům internetu. Návrh socialistického poslance Laurenta Lhardita stanovuje sazbu 0,055 eura za gigabajt, tedy 55 eur za terabajt. Zatím nejde o platný zákon, ale o dílčí hlasování během prvního čtení rozpočtu. Daň by měli platit

    … více »
    vencour | Komentářů: 3
    včera 12:44 | IT novinky

    Nizozemská vláda ve snaze šetřit a zvyšovat efektivitu s využitím umělé inteligence (AI) hodlá zrušit asi 25.000 pracovních míst ve státní správě. Cílem je postupně dosáhnout ročních úspor až 3,5 miliardy eur (85,2 miliardy Kč). Na konci loňského roku ve státní správě pracovalo rekordních 160.000 lidí. „Nemůžeme pokračovat v tom, co jsme dělali dosud,“ uvedl státní tajemník pro efektivní fungování vlády Eric van den Burg. „Proto

    … více »
    Ladislav Hagara | Komentářů: 34
    včera 12:00 | IT novinky

    Příspěvek na blogu PRUSA 3D představuje fotoaparát CAIM1 (Counter Artificial Intelligence Machine 1). Uměle vytvořený obsah je každým dnem těžší rozeznat od skutečných záběrů či fotografií, což podrývá důvěryhodnost žurnalistiky, archivních materiálů i každodenní tvorby obsahu. Fotoaparát CAIM1 byl vyvinut právě k tomu, aby ověřoval původ fotografií a videí přímo během jejich pořizování. Uvnitř fotoaparátu se nachází hardwarová Web3 peněženka se zabezpečovacím čipem Tropic Square TROPIC01.

    Ladislav Hagara | Komentářů: 7
    včera 00:11 | Nová verze

    Jonathan Thomas oznámil vydání nové verze 4.1 video editoru OpenShot (Wikipedie). Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

    Ladislav Hagara | Komentářů: 0
    31.10. 23:33 | Zajímavý článek

    Při běžné migraci virtuálního stroje mezi hypervizory se jeho MAC adresa přesune na jiný leaf switch. EVPN tuto změnu distribuuje pomocí BGP Type-2 route a MAC mobility sequence number. Problém nastává, pokud útočník podvrhne zdrojovou MAC adresu jiného zařízení. Leaf může změnu interpretovat jako legitimní přesun MAC a rozšířit ji přes BGP do celé fabric. Výsledkem může být přesměrování provozu určeného původnímu zařízení. Autor článku rozebírá možnosti detekce pomocí sledování MAC moves, BGP route reflektorů a kontroly na přístupové vrstvě.

    vencour | Komentářů: 0
    31.10. 15:11 | Nová verze

    Vývojáři desktopového prostředí Enlightenment (Wikipedie) a souvisejících knihoven Enlightenment Foundation Libraries (EFL) vydali nové verze. Enlightenment byl vydán ve verzi 0.28.0 a Enlightenment Foundation Libraries ve verzi 1.29.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2965 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Dotaz: Output command to variable

    10.11.2020 17:05 Lukáš
    Output command to variable
    Přečteno: 712×
    Ahoj, nemohu přijít na lehký programátorský oříšek :-)

    Prosím Vás, jak docílím uložení výstupu příkazu do proměnné v bashi? Standartně je syntaxe:
    c=$(pwr)
    echo "Output ${c}"
    
    To tak FUNGUJE!

    --------------------------------------------------------------------------
    Ale potřebuji výstup z příkazu "nc"
    c=$(nc -v -z 192.168.1.222 80)
    echo "Output ${c}"
    
    Toto NEFUNGUJE

    Ve výstupu mám:
    Connection to 192.168.1.222 80 port [tcp/http] succeeded!
    Output
    
    Proměnná "c" je prázdná. Jak prosím uložím příkaz "nc" do proměnné?

    Všem moc děkuji za pomoc Lukáš

    Odpovědi

    10.11.2020 17:32 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Output command to variable
    Pokud chcete stáhnout obsah dostupný přes http, je nc zbytečně nízkoúrovňové. Použijte třeba curl:

    O=$(curl http://192.168.0.1/index.html)
    -- OldFrog
    10.11.2020 18:43 pavele
    Rozbalit Rozbalit vše Re: Output command to variable
    c=$(nc -v -z 127.0.0.1 80 1 2>&1)
    10.11.2020 19:54 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Output command to variable
    c=$(nc -v -z 127.0.0.1 80 1 2>&1)
    Pořád mi přijde curl pro daný úkol snadnější, porovnej curl:
    # curl www.root.cz
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>301 Moved Permanently</title>
    </head><body>
    <h1>Moved Permanently</h1>
    <p>The document has moved <a href="https://www.root.cz/">here</a>.</p>
    <hr>
    <address>Apache/2.4.25 (Debian) OpenSSL/1.0.2l Server at www.root.cz Port 80</address>
    </body></html>
    
    čili:
    # curl https://www.root.cz
    
    <!DOCTYPE html>
    <!--
    Zdá se, že se zajímáš o náš zdrojový kód...
    Hledáme posilu do našeho týmu!
    @erik.dvorak@iinfo.cz
    --><html id="css" class="js-inactive design-html" lang="cs">
    (...)
    
    vs nc:
    # nc -v -z www.root.cz 80
    Connection to www.root.cz 80 port [tcp/http] succeeded!
    
    -- OldFrog
    11.11.2020 08:29 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Output command to variable
    On chce otestovat to, jestli je port otevřený (nc -z), ne poslat HTTP požadavek.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    11.11.2020 14:36 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Output command to variable
    Oops, máte pravdu.

    Ale to bych pak testoval nějak takto:

    nc -v -z 127.0.0.1 81 && echo OTEVRENY || echo ZAVRENY;
    -- OldFrog
    12.11.2020 09:18 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Output command to variable
    A bez toho -v.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    10.11.2020 17:36 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Output command to variable
    Zápis nazev_promenne=="$(příkaz)" uloží do proměnné standardní výstup (stdout) příkazu. Každý program spuštěný ze shellu má ve výchozím stavu tyto výstupy:
    • stdin, fd 0, standardní vstup – toto je text z klávesnice nebo vstup poslaný rourou
    • stdout, fd 1, standardní výstup – běžně se posílá do terminálu („na obrazovku“), ale můžete ho přesměrovat do jiného příkazu nebo souboru
    • stderr, fd 2, (standardní) chybový výstup – běžně se posílá do terminálu („na obrazovku“), ale můžete ho přesměrovat do jiného příkazu nebo souboru – podobný stdout1
    V shellu jste se pravděpodobně setkal s přesměrováním. Syntaxe je následující:
    # standardní výstup jde do souboru
    příkaz >soubor
    
    # standardní vstup jde ze souboru
    příkaz <soubor
    
    # standardní výstup příkaz1 jde na standardní vstup příkaz2
    příkaz1 | příkaz2
    
    Můžete si všimnout toho, že všechny případy se týkají jen standardního vstupu a výstupu. Chybový výstup jde ve výchozím nastavení do terminálu. Pokud ho chcete přesměrovat do souboru, vypadá to takto:
    # chybový výstup jde do souboru
    příkaz 2>soubor
    
    Ta dvojka znamená file descriptor číslo 2, tedy stderr. Podobně můžete nastavit i jiné FD než stdout a stderr, ale to v praxi většinou nepoužijete.

    Můžete také přesměrovat stderr do stdout tím, že do cílového souboru napíšete &2 (FD číslo 2)2:
    # chybový výstup (fd 2) se sloučí se standardním (fd 1), takže je veškerý výstup na standardním
    příkaz 2>&1
    
    To můžete pak vzít a přesměrovat do souboru nebo jiného příkazu:
    # chybový výstup (fd 2) se sloučí se standardním (fd 1), standardní se pak směruje do souboru
    příkaz 2>&1 >soubor
    
    # chybový výstup příkazu 1 (fd 2) se sloučí se standardním příkazu 1 (fd 1), standardní se pak směruje do příkazu 2 (příkaz 2 už má ale opět oba výstupy)
    příkaz1 2>&1 | příkaz2
    

    Takže co tam má být?

    nc tuto hlášku vypisuje na standardní chybový výstup, takže je chceme sloučit a to potom uložit do proměnné:
    c="$(nc -vz 192.168.1.222 80 2>&1)"

    Rada na závěr:

    Pokud máte v shellu proměnnou, pište ji do uvozovek. Srovnejte tyto dva zápisy:
    a=$(echo lorem ipsum)
    b="$(echo lorem ipsum)"
    Po vyhodnocení $(…) bash vidí toto:
    a=lorem ipsum
    b="lorem ipsum"
    První řádek znamená „spusť příkaz „ipsum“ s proměnnou prostředí „a“ nastavenou na „lorem“.

    Druhý řádek znamená „ulož do proměnné „b“ text „lorem ipsum“.

    Toto je častý zdroj chyb v bashových programech.

    [1] Trochu odlišně se bufferuje a některé emulátory terminálu ho mohou jinak zpracovávat – např. zobrazit jinou barvou. [2] S tímhle je možné dělat i poměrně nečitelné věci. Příkaz exec je možné použít ke směrování file deskriptorů samotného shellu.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    10.11.2020 17:41 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Output command to variable
    Ještě jedna věc:

    Příkaz má i svůj exit status (česky asi návratový kód), tedy číselný popis stavu po ukončení. Většina příkazů funguje tak, že ho nastaví na nenulovou hodnotu při chybě, jinak je 0. To umožňuje tvořit podmínky:
    if příkaz1
    then
            toto se provede pokud příkaz1 uspěl
    fi
    
    if příkaz2
    then
            toto se provede pokud příkaz2 uspěl
    else
            toto se provede pokud příkaz2 neuspěl
    fi
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    11.11.2020 09:00 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Output command to variable
    Pokud máte v shellu proměnnou, pište ji do uvozovek. Srovnejte tyto dva zápisy:
    a=$(echo lorem ipsum)
    b="$(echo lorem ipsum)"
    Po vyhodnocení $(…) bash vidí toto:
    a=lorem ipsum
    b="lorem ipsum"
    První řádek znamená „spusť příkaz „ipsum“ s proměnnou prostředí „a“ nastavenou na „lorem“.

    Druhý řádek znamená „ulož do proměnné „b“ text „lorem ipsum“.

    Toto je častý zdroj chyb v bashových programech.

    Obecně máte pravdu, ale zrovna u přiřazení je to trochu složitější, takže ten váš příklad nefunguje tak, jak tvrdíte:

    mike@lion:~> var=$(echo lorem ipsum)
    mike@lion:~> echo ">$var<"
    >lorem ipsum<
    
    10.11.2020 17:37 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Output command to variable

    To hlášení píše nc na chybový výstup, nikoliv na standardní výstup. Proto se objevuje na terminálu a ne v proměnné.

    c="$(netcat -v -z 2a02:xxxx:yyyy:2:defb:48ff:fe28:4f42 80 2>&1)"
    

    Takhle^^^ mi to normálně funguje:

    $ echo "$c"
    Connection to 2a02:xxxx:yyyy:2:defb:48ff:fe28:4f42 80 port [tcp/http] succeeded!
    

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.