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 02:33 | IT novinky

    Canonical oznámil vydání Zephyr 26.04 LTS. Jedná se o komerční distribuci operačního systému pro mikrokontroléry Zephyr (Wikipedie) s podporou až 15 let.

    Ladislav Hagara | Komentářů: 0
    dnes 02:00 | Zajímavý projekt

    Gravity Linux je linuxová distribuce určená pro Apple Silicon s čipy M4 a novějšími. Vydána byla alfa verze pro M4 Mac mini. Gravity Linux je fork Asahi Linuxu.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Zajímavý projekt

    Hister je osobní soukromý vyhledávač, který lze provozovat na vlastním stroji. Umí prohledávat lokální soubory, importovat historii a záložky z webových prohlížečů, procházet vybrané weby a pomocí rozšíření pro Firefox a Chrome indexovat obsah právě navštívených stránek. Nad vytvořeným indexem pak nabízí vyhledávání prostřednictvím webového rozhraní, příkazové řádky a díky podpoře MCP i nástrojům umělé inteligence. Tento

    … více »
    AfD 💙 | Komentářů: 0
    včera 13:33 | IT novinky

    Ministerstvo dopravy uznalo prozatímní schválení asistenčního systému Tesla FSD Supervised vydané nizozemským schvalovacím orgánem RDW. Připojilo se tak k Nizozemsku a dalším pěti evropským státům. Systém je díky tomuto rozhodnutí možné používat za podmínek prozatímního schválení také na území České republiky. Tesla FSD Supervised je asistenčním systémem úrovně 2 podle klasifikace SAE (částečná automatizace řízení). Řidič se

    … více »
    Ladislav Hagara | Komentářů: 12
    včera 11:22 | Upozornění

    Někteří zákazníci O2 mohou aktuálně zaznamenat zhoršenou dostupnost internetových služeb. Na odstranění potíží se pracuje [Facebook].

    Ladislav Hagara | Komentářů: 7
    včera 01:22 | Nová verze

    PyPy (Wikipedie), tj. implementace Pythonu v RPythonu, alternativa CPythonu v C, byla vydána v nové major verzi 8.0.0. Podporuje Python 2.7, 3.11 a 3.12.

    Ladislav Hagara | Komentářů: 0
    včera 00:22 | Komunita
    V rakouském Štýrském Hradci probíhá konference vývojářů a uživatelů desktopového prostředí KDE Plasma Akademy 2026. O víkendu proběhly přednášky. Videozáznamy jsou k dispozici na YouTube.
    Ladislav Hagara | Komentářů: 3
    20.9. 23:55 | Bezpečnostní upozornění

    V jádře Linux byly nalezeny a v upstremu ve verzích 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 a 7.2.4 již opraveny 4 kritické zranitelnosti umožňující eskalaci práv: DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) a DiagSpill (CVE-2026-74469).

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

    Německá policie a celníci zneužívají ke čtení zpráv komunikačních aplikacích WhatsApp, Signal, Telegram nebo Threema velice jednoduchý trik, který nevyžaduje prolomení šifrování, spear phishing, odposlech SMS či jinou technicky náročnou metodu. Příslušníkům státního aparátu pouze stačí získat krátký přístup k odemčenému telefonu a prostřednictvím QR kódu propojit účet s oficiální desktopovou nebo webovou aplikací v policejním

    … více »
    AfD 💙 | Komentářů: 7
    19.9. 02:11 | IT novinky Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2710 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Podivné chování getline v awk skriptu

    21.10.2021 17:52 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Podivné chování getline v awk skriptu
    Přečteno: 471×
    Parsuji výstup ldapsearch z AD a narazil jsem na zvláštní chování getline v awk skriptu. Nedokážu přijít na to, proč druhý výskyt jména "Lukaš" (ano, je tam krátké "a") se nevytiskne:
    echo -e "givenName:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel" | awk '{ v = "" } { if ($1 ~ "::") { "echo "$2" | base64 -d" | getline v; gsub (/::/, ":", $1); print $1, v } else { print $0 }}'
    givenName: Lukaš
    givenName: Tomáš
    givenName: 
    givenName: Karel
    Máte někdo nějaké vysvětlení?

    Jak upravit skript, aby fungoval i v takovém případě podle očekávání?

    Díky

    Řešení dotazu:


    Odpovědi

    21.10.2021 18:46 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Nebolo by lepšie ten ldapsearch urobiť v nejakom high level jazyku, napr pytóne ktorý má priamo knižnicu na LDAP čo rovno aj dekóduje ten base64 na text s diakritikou?
    22.10.2021 07:24 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Chápu, co navrhuješ, ale celkové zadání je takové: bude to součástí jenkins jobu a chceme to zachovat "as much simple as possible", takže využívat pouze již instalované core nástroje. Druhá věc je, že awk je mi prostě v této situaci sympatičtější a tak bych tomu chtěl mimo jiné přijít "na kloub".
    22.10.2021 08:35 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Tiež mám podobný názor na pytón. Ale ak sa ten ldapsearch s Jerkinsom nedá použiť, tak veľa zdaru. Z toho pytónu lezie lepší výstup ktorý nie je treba takto ošetrovať. Ldapsearch trošku zaspal dobu.
    Řešení 1× (Вherzet)
    21.10.2021 21:18 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    echo -e "givenName:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel"|while read line; do items=(`echo $line`); define=${items[0]}; if [ "${define:10:1}" = ":" ]; then echo "${define:0:10} `echo ${items[1]}|base64 -d`"; else echo $line; fi; done
    debian.plus@protonmail.com
    22.10.2021 07:43 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Díky za řešení.

    Neuvedl jsem původně, že klíč (givenName:) není jediný, u kterého řeším base64 dekódování, takže skript by potřeboval úpravu. Nicméně ještě jednou díky za pomoc.
    Řešení 1× (Вherzet)
    22.10.2021 09:48 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Verzia na študovanie:
    keys="givenExtra givenName";
    echo -e "givenExtra:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel"|
    while read line; do
    	items=(`echo $line`);
    	define=${items[0]};
    	
    	for key in $keys;
    	do
    		if [ "$define" = "$key::" ]; then
    			echo "$key: `echo ${items[1]}|base64 -d`";
    			break;
    		fi
    		if [ "$define" = "$key:" ]; then
    			echo $line;
    			break;
    		fi;
    	done;
    done
    
    Jednoriadková verzia: keys="givenExtra givenName"; echo -e "givenExtra:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel"| while read line; do items=(`echo $line`); define=${items[0]}; for key in $keys; do if [ "$define" = "$key::" ]; then echo "$key: `echo ${items[1]}|base64 -d`"; break; fi if [ "$define" = "$key:" ]; then echo $line; break; fi; done; done
    debian.plus@protonmail.com
    Řešení 1× (AfD 💙)
    22.10.2021 00:00 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu

    S awk:

    echo -e 'givenName:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel' \
    | awk 'BEGIN {  FS = "(\\s|:)+"
                   OFS = ": "
                   b64 = "base64 -d" }
           /^givenName::/ { print $2 |& b64
                            close(b64, "to")
                            b64 |& getline $2
                            close(b64) }
           1'
    

    Bez awk:

    echo -e 'givenName:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\ngivenName: Karel' \
    | while read gn name; do
        [[ "$gn" = *'::' ]] &&
        echo "${gn::-1}" "$(base64 -d <<< "$name")" ||
        echo "$gn" "$name"
      done
    
    22.10.2021 07:37 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    @Andrej - díky za obě řešení.

    Z mého úvodního dotazu nevyplynulo, že "givenName:" resp. "givenName::" není jediný klíč, u kterého řeším base64. Ty klíče tam jsou nejméně tři (ještě např. "dn:" a "sn:"). To už zkusím tvůj skript při-ohnout sám :-)

    Dokázal bys mi objasnit, proč to moje původní řešení funguje tak nederministicky? Proč se proměnná "v" v případě druhého výskytu jména nenaplní správně, ale zůstane prázdná?
    22.10.2021 09:14 X
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Mimochodem, kdyz nakopiruji tvoje reseni do terminalu dotanu:
    /bin/sh: 1: Syntax error: "|" unexpected
    Takze zrovna prenositelne to moc neni..
    Řešení 1× (Вherzet)
    22.10.2021 09:27 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    BASH != SH
    debian.plus@protonmail.com
    22.10.2021 14:01 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    To je v poho. Človek za chvíľu zistí že nie všetky záznamy z ldapsearch sú v UTF, a posunie sa na druhú úroveň zbytočného riešenia.

    Good luck :-)
    22.10.2021 17:18 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu

    Asi to špatně kopíruješ nebo máš špatný shell nebo obojí. Problém s řádkem začínajícím | jistě není tak těžké vyřešit.

    22.10.2021 17:20 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu

    Druhé řešení (Bash) na givenName nezáleží.

    První rešení (AWK) se dá snadno přiohnout, aby se klíč zachoval.

    Řešení 1× (Tomáš Pelc (tazatel))
    25.10.2021 15:17 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše Re: Podivné chování getline v awk skriptu
    Tak jsem se snažil přiohnout tvoje AWK řešení a tady je výsledek:
    ADST="givenName:: THVrYcWh\ngivenName:: VG9tw6HFoQo=\ngivenName:: THVrYcWh\nsn:: VG9tw6HFoQo=\ngivenName: Karel\nsAMAccountName:: xIxlc8WlbcOtxZkK"
    
    echo -e "$ADST" \
      | awk 'BEGIN { FS = ": "; OFS = ": "; b64 = "base64 -d" }
      { if ($1 ~ ":") { print $2 |& b64; close(b64, "to"); b64 |& getline $2; close(b64) }}
      { gsub (/:/, "", $1); print $1, $2 }'
    Předpokládám, že by to šlo vyřešit ještě elegantněji, ale na to už nestačí moje současné znalosti AWKu.

    Založit nové vláknoNahoru

    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.