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:11 | IT novinky

    Byla oznámena beta verze nového video kodeku Pyrowave pro streamování her v Steam Remote Play. S vysokou propustností a nízkou latencí. S podporou HDR a YUV 4:4:4.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Byl vydán Sublime Text 4 Build 4213. Sublime Text (Wikipedie) je proprietární multiplatformní editor textových souborů a zdrojových kódů. Ke stažení a k vyzkoušení je zdarma. Pro další používání je nutná licence v ceně 99 dolarů. Spolu se Sublime Merge je cena 168 dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 21:55 | Zajímavý článek

    Firma Anthropic, tvůrce AI modelu Claude, začala v oblasti Sanfranciského zálivu v tichosti provozovat vlastní biotechnologickou laboratoř. Anthropic prý chce pomocí AI urychlit hledání léků na nemoci, jimž farmaceutický průmysl dle názoru firmy věnuje příliš málo pozornosti. Firma tvrdí, že laboratoř se zatím soustředí především na základní biologii, nikoli přímo na vývoj léčiv. Farmaceutický výzkum je pro generálního ředitele Daria Amodeie velice osobní téma, jeho otec zemřel na hepatitidu C několik málo let před objevením účinné léčby.

    AfD 💙 | Komentářů: 3
    včera 21:44 | Humor

    Vědci z Googlu dokončili mapu všech neuronových spojení v mozku (tzv. konektom) samečka mušky octomilky obecné (drosophila melanogaster), hlavním cílem je komparativní analýza s již zmapovaným mozkem samičky. S tímto veřejně dostupným modelem, čítajícím přibližně 160 000 neuronů, se začali bavit nadšenci. Mozek mouchy pohání experimentálního kryptoburzovního bota Stonkfly, případně si zahrál počítačové hry Beat Saber, Mario64 a samozřejmě DOOM (gameplay videa). Ani mozek samičky nezůstal stranou, vyzkoušel si Minecraft.

    AfD 💙 | Komentářů: 0
    včera 16:22 | Nová verze

    Alibaba Cloud je dalším sponzorem nadace Omacom Foundation stojící za linuxovou distribucí Omarchy. Přislíbená částka je 3 miliony dolarů, tj. 1 milion dolarů ročně po dobu tří let. Stejná částka jako u DigitalOcean.

    Ladislav Hagara | Komentářů: 4
    včera 16:11 | Nová verze

    Byla vydána nová verze 262 správce systému a služeb systemd (Wikipedie, GitHub).

    Ladislav Hagara | Komentářů: 0
    včera 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
    včera 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
    21.9. 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ářů: 9
    21.9. 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ářů: 22
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2718 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Bash a odstranění neviditelných znaků

    Zdeněk Zámečník avatar 24.4.2009 20:58 Zdeněk Zámečník | skóre: 26
    Bash a odstranění neviditelných znaků
    Přečteno: 798×

    Začínám doslova šílet, protože už několik hodin trávím nad hledáním jedné chyby. Používám na dohled nad servery Zabbix. Napsal jsem si v bashi skript pro posílán sms, který mi spolehlivě fungoval....než jsem jej začal používat právě v Zabbixu.

    Věc se má tak, že Zabbix pošle alert skriptu nazývaným sms-courier a to tímto způsobem:

    sms-courier 999000999 "router-plzen" "Host is down"

    Přičemž to, co zde výše popisuji je reálný příkaz až na zaměněné tel. číslo. Sms-courier už se jen postará o odeslání přes bránu operátora. Pokud jej provedu na příkazové řádce nebo použiji v jiném skriptu, tak mi smska přijde. Jakmile ale tento (úplně ten samý) příkaz vygeneruje a vykoná Zabbix, nic se nestane.

    Přišel jsem na to, že za to tak trochu v sms-courieru může tato řádka:

    message=$(echo "$2 : $3" | sed 's/ /%20/g;y/áÁéÉěĚčČďĎíÍóÓňŇřŘšŠťŤůŮúÚýÝžŽ/aAeEeEcCdDiIoOnNrRsStTuUuUyYzZ/')

    Výstupem sedu je totiž v tento moment prázdný řetězec, což je přinejmenším divné. Tento příkaz nahrazuje mezery %20 a odstraňuje diakritiku.

    Dokáže mi někdo vysvětlit, proč se to děje? Nepřijde mi ani trochu logické, že při nahrazování diakritiky v řetězci, kde žádná není, je výstupem prázdný řetězec (a to pouze pokud příkaz spouští zabbix).

    Pokud v sms-courieru krok pro odstranění diakritiky vynechám, tak se sice zpráva odešle, ale pro změnu ji pak někde zahodí operátor. Vypadá to jako by byl řetězec v nějakém divném kódování nebo obsahoval neviditelné znaky.

    Zkoušel jsem řetězec před protažením výše zmíněným sedem zpracovat také těmito příkazy:

    sed 's/.$//'
    sed 's/\r//'
    sed 's/[^a-zA-Z]*//g')
    tr -d '\a\b\f\n\r\t\v'

    Ale bezúspěšně. Vždy mě čeká prázdný řetězec. Dokáže mi někdo poradit?

    Předem díky za jakoukoliv myšlenku...


    Řešení dotazu:


    Odpovědi

    24.4.2009 21:44 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Aky intrepreter je uvedeny na zaciatku skriptu? sh, bash? Je v danom systeme sh hardlink na bash (typicky Linux), alebo ten system skutocne obsahuje sh (typicky BSD)? Este mi napada, ci nahodou "vsetci ostatni" nespustaju sms-courier "priamo", zatial co Zabbix zavola "sh sms-courier" alebo podobne, cim predhodi tento skript inemu interpreteru.

    Ak je mozne vidiet vystup pri spusteni zo zabbixu, odporucam pouzit "ladiace ficury" shellu; interpreteru na prvom riadku je mozne podhodit parametre:
    #! /bin/sh -v
    
    zobrazi kazdy prikaz pred spustenim tak, ako by bol spusteny, a
    #! /bin/sh -x
    
    urobi to iste, ale prikazi sa vypisu po aplikovani aliasov, substitucii a expanzii. Tak je mozne vidiet co sa skutocne spusta.
    Zdeněk Zámečník avatar 24.4.2009 22:02 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Sms-courier je napsán pro bash. Používám Debian Lenny, kde je symlink sh>bash, takže v tom problém nebude. Bohužel ten výstup, který to dělá s parametrem -x nebo -v, pokud jej spouští zabbix, vidět nemohu.


     

    Zdeněk Zámečník avatar 24.4.2009 21:45 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Začíná to pro mě být čím dál větší záhada, protože pokud alert "Host is down" pošlu do souboru tímto způsobem:

    #!/bin/bash
    echo $1 > output

    a potom provedu:

    #!/bin/bash
    sed 'y/áÁéÉěĚčČďĎíÍóÓňŇřŘšŠťŤůŮúÚýÝžŽ/aAeEeEcCdDiIoOnNrRsStTuUuUyYzZ/' output

    ..tak je výstup v pořádku

    ALE pokud to celé udělám v rámci jednoho skriptu, tak je výstup opět prázdný! To je už je mimo mé chápání.

    24.4.2009 21:58 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Mozes sem dat minimalnu verziu skriptu, ktora nefunguje? Ja som to skusil takto:
    [babjak][~/tmp/bash][21:52:32] cat together.sh
    #! /usr/local/bin/bash
    
    message=$(echo "$2 : $3" | sed 's/ /%20/g')
    
    echo "'$message'"
    [babjak][~/tmp/bash][21:53:03] ./together.sh 999999 "Router-Plzen" "Host is down"
    'Router-Plzen%20:%20Host%20is%20down'
    [babjak][~/tmp/bash][21:53:41] 
    
    co sa zda byt ok, ale asi som to prilis zjednodusil. Mimochodom, pocas pisania toho skriptu sa mi stalo, ze v prvom prikaze som mal napsane meno premennej "mesage" (chyba jedno s), ale v druhom prikaze uz spravne "message". Tym padom som v druhom prikaze vypisoval nedefinovanu premennu a dostal som ... nic. Nemozes mat aj Ty niekde nejaky blby preklep? Clovek to po sebe jednoducho nevidi, vzdy precita to co tam ma byt, nie to co tam v skutocnosti je.

    Zdeněk Zámečník avatar 24.4.2009 22:18 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Ten skript právě funguje, ale pokud do něj parametry předává Zabbix, výstup je prázdný. Pokusím se to demonstrovat, co nejjednoduššejí. Jsem si téměř jist, že nikde nemám chybu, protože to by to pak nefungovalo takto:

     

    #!/bin/bash
    phone=$1
    host=$2
    echo "$phone $host" > /cbin/input
    echo "$phone $host" | sed 'y/áÁéÉěĚčČďĎíÍóÓňŇřŘšŠťŤůŮúÚýÝžŽ/aAeEeEcCdDiIoOnNrRsStTuUuUyYzZ/' > /cbin/output

     

    Pokud tento skript zavolám skript 999 router-plzen, tak se do do obou souborů uloží totéž: 999 router-plzen.

    Pokud jej zavolá Zabbix, tak je sice v souboru input 999 router-plzen, ale soubor output je prázdný.

    24.4.2009 22:36 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Hmmmm... weird environment. Ak je to tak, potom mi to pripada, akoby Zabbix nevedel spustit sed, napr. preto, lebo ho nema v PATH. Skusil by som dve veci, kazdu osobitne. 1) do /cbin/output presmerovat aj chybovy vystup a 2) uviest plnu cestu k sed-u; echo spustit ide aj zo zlym environmentom, lebo sa pouzije built-in verzia.
    Zdeněk Zámečník avatar 24.4.2009 23:04 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    To mě ani nenapadlo, ale bohužel to cestou k sedu není. Zadal jsem ji celou a výsledek stejný.

    S tím přesměrováním výstupu to byla velmi dobrá myšlenka. Mimochodem nevíte, jak přesměrovat stderr až uvnitř skriptu?

    /bin/sed: -e expression #1, char 94: strings for `y' command are different lengths

    Což zní zvláštně. Vypadá to, jako kdyby sed v případě, kdy jej spuští zabbix, "neviděl" některá ta písmena s diakritikou, která má nahradit, ale proboha proč...

    24.4.2009 23:06 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Ano tohle chybovou hlášku jsem právě taky viděl -- napadlo mne že by mohl být problém s diakritikou tak jsem zkusil sed 'y//abc/'. Ale jak k tomu zabbix přijde nevím, možná něco s utf8?
    24.4.2009 23:10 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Uvnitř skriptu přesměrujete:
    exec 2>/cbin/output.err
    pokud byste to chtěl vrátit tak si ještě předtím musíte udělat zálohu:
    exec 3>&2
    exec 2>/cbin/output.err
    necodelej
    exec 2>&3
    
    
    Zdeněk Zámečník avatar 24.4.2009 23:15 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Díky :)

    Mnohem elegantnější než to moje spouštění nového procesu.

    Zdeněk Zámečník avatar 24.4.2009 23:11 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Mám to!

    export LC_ALL=cs_CZ.UTF-8

    24.4.2009 23:12 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Mimochodem se celkem nabízí otázka jak tedy přesně zabbix spouští ten skript? Zatím jsem to tu nikde v komentářích nenašel.
    Zdeněk Zámečník avatar 24.4.2009 23:20 Zdeněk Zámečník | skóre: 26
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků

    Těžko říct, a v tom kódu by se to jen těžko hledalo. Podle mě jej spouští jako jakýkoliv jiný program v terminálu, ale proč nepoužije defaultně nastavenou českou lokalizaci, to nevím.

    Mimochodem takto vypadá passwd:

    zabbix:x:105:107::/var/run/zabbix-server/:/bin/false

    24.4.2009 22:41 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a odstranění neviditelných znaků
    Nezapomeňte zkusit taky:
    echo "$phone $host" | sed 'y/áÁéÉěĚčČďĎíÍóÓňŇřŘšŠťŤůŮúÚýÝžŽ/aAeEeEcCdDiIoOnNrRsStTuUuUyYzZ/' > /cbin/output 2>/cbin/output.err
    ono na chybovém výstupu občas něco bývá.

    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.