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 15:40 | Nová verze
The Document Foundation oznámila vydání verze 4.4 svobodného kancelářského balíku LibreOffice. Z novinek je v oznámení zdůrazněno vylepšené uživatelské rozhraní, lepší podpora OOXML a kvalita zdrojových kódů (Coverity Scan). Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání.
Ladislav Hagara | Komentářů: 3
dnes 10:09 | Nová verze
Laboratoře CZ.NIC vydaly další verzi (4.1.0) desktopové aplikace Datovka 4. Tato verze zahrnuje kromě oprav chyb i některé novinky a vylepšení. Mezi ně patří dokonalejší mechanizmus odesílání zpráv více příjemcům, lepší způsob označovaní nově přijatých zpráv, rychlejší stahování zpráv a ukládání do databáze či vylepšená nabídka kontaktů. Z novinek stojí za zmínku možnost importovat ZFO soubory zpět do lokální databáze, podpora … více »
Vilem Sladek | Komentářů: 16
27.1. 23:23 | Bezpečnostní upozornění
V knihovně glibc byla nalezena kritická zranitelnost CVE-2015-0235, jež dostala jméno GHOST. Jedná se o přetečení zásobníku ve funkci __nss_hostname_digits_dots(). Útočník může v nejhorším případě vzdáleně spustit libovolný kód. [CSIRT.CZ]
Ladislav Hagara | Komentářů: 29
27.1. 21:29 | Zajímavý software
Jon von Tetzchner, jenž v roce 1994 založil společnost Opera, do roku 2010 byl jejím CEO a v roce 2011 ji zcela opustil, představil se svým týmem nový webový prohlížeč Vivaldi. Technologické demo je k dispozici také pro Linux. Diskuse na Vivaldi.net.
Ladislav Hagara | Komentářů: 72
27.1. 21:28 | Nová verze
Bylo oznámeno vydání verze 5.2 prostředí KDE Plasma. Nejnovější Plasma přináší nové komponenty (BlueDevil, KSSHAskPass, Muon, ...), funkce a samozřejmě řeší řadu chyb obsažených ve verzi 5.1 (zprávička). Podrobnosti v úplném seznamu změn. Videoukázka prostředí na YouTube.
Ladislav Hagara | Komentářů: 3
27.1. 21:28 | Pozvánky
Až do pátku 30. ledna můžete hlasovat o programu konference InstallFest 2015. Témata jsou různorodá, od embedded po servery, a na výběr je též z několika workshopů. Program konference je ve vašich rukou.
Jendа | Komentářů: 0
27.1. 01:01 | Nasazení Linuxu
LinuxGizmos.com představuje výškově nastavitelný pracovní stůl Stir Kinetic Desk M1. Stůl poháněný Linuxem je dodáván s WiFi, Bluetooth a dotykovým displejem o velikosti 5 palců. Jedná se o novější a levnější model stolu od společnosti Stir. Cena modelu M1 je 2990 dolarů a lze si vybrat mezi bílým a černým provedením. Model F1 je k dispozici za 4190 dolarů. Představení vlastností stolu na YouTube.
Ladislav Hagara | Komentářů: 20
27.1. 01:00 | Pozvánky
Ve středu 28. ledna se od 18.00 v místnosti A318 v prostorách Fakulty informatiky Masarykovy univerzity v Brně bude konat pravidelné setkání Czech JBoss User Group. Tentokrát budou na programu hned dvě přednášky o aplikačním serveru WildFly. Stuart Douglas a Michael Musgrove napřed ukáží novinky v chystané nové verzi WildFly 9 a poté představí transakční subsystém Narayana. Podrobné informace naleznete na stránce akce.
Vojtěch Trefný | Komentářů: 0
26.1. 01:01 | Zajímavý software
Rich Geldreich, bývalý vývojář Valve, vydal první stabilní verzi 1.0 bezeztrátového kompresního algoritmu a knihovny LZHAM (GitHub). Komprese s LZHAM je srovnatelná s LZMA, dekomprese je ale 1,5 až 8 krát rychlejší. Rich Geldreich pracuje na LZHAM již více než 3 roky. Předchozí vývoj probíhal na Google Code. [Phoronix]
Ladislav Hagara | Komentářů: 55
25.1. 14:32 | Zajímavý software
Byl vydán Cool-Retro-Term ve verzi 1.0.0. Jedná se o emulátor terminálu, který napodobuje vzhled a chování starých CRT terminálů. Původně byl emulátor vyvíjen pod názvem Cool-Old-Term. V září loňského roku byl přejmenován na Cool-Retro-Term (CRT). Ukázka vlastností a nastavení na YouTube.
Ladislav Hagara | Komentářů: 25
Disketu jsem naposledy použil během
 (41%)
 (3%)
 (12%)
 (41%)
 (3%)
Celkem 2034 hlasů
 Komentářů: 58, poslední 25.1. 18:11
    Rozcestník
    Reklama
    Autoškola testy online Levný benzín

    Dotaz: Python, prijem dat ze stdin

    12.2.2010 19:41 Rezka Cervena
    Python, prijem dat ze stdin
    Přečteno: 638×
    Zdravim,

    pokud mam skript v pythonu, ktery obsahuje jen radek:
    sys.argv[1];
    
    Tedy vypise svuj prvni parametr. Jakym zpusobem musim skript upravit, aby fungoval obemi temito moznostmi:
    $ ./skript test
    test
    $ echo test | ./skript
    test
    

    Řešení dotazu:


    Odpovědi

    12.2.2010 21:17 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Tak aby se podíval do sys.argv a pak na standardní vstup. Jsou to dvě naprosto odlišné záležitosti. Víc neporadím, Python jde mimo mě.
    Překladač ti nikdy neřekne: "budeme kamarádi"
    Pavel Stárek avatar 13.2.2010 09:19 Pavel Stárek | skóre: 42 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Zajímá tě objekt sys.stdin.

    Příklad, mějme soubor pokus.py:
    #!/bin/env python
    import sys
    nejakadatazestdin = sys.stdin.readlines()
    print nejakadatazestdin
    
    a pro otestovaní:

    echo pokus.py | ./pokus.py
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    13.2.2010 16:07 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Ja potrebuji ten skript pouzit takto:

    $ ./cti_prubeh | grep "udalost1 "| ./mujskript

    Kde cti_prubeh je skript, ktery kazdou sekundu vypisuje urcite zpravy, z nich si pres grep filtruji pouze urcite udalosti a mujskript by mel delat to, ze jen vytiskne to co mu posle grep (pozdeji samozrejme bude mit urcitou funkcionalitu, ale toto je zaklad).

    S vasim resenim to bohuzel nefunguje (misto cti_prubeh muzete pouzit treba tcpdump nebo jakykoliv jiny program kteri pravidelne neco vypisuje do konsole).

    Jakym zpusobem tedy mohu takovy skript udelat v pythonu?
    13.2.2010 18:04 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Ale funguje. Akorát předchozí příklad ukazuje, jak se načte stdin celý naráz, kdežto ty to chceš po řádcích
    for line in sys.stdin:
        dělej něco...
    
    což by ze znalosti, že souborový objekt odpovídající stdin je sys.stdin, mělo jít odvodit...
    13.2.2010 20:35 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Zkuste si to sam, mejme skript test.sh:
    #!/bin/bash
    
    while [ 1 ]; do
    echo "Tik"
    sleep 1
    done 
    
    Nyni chci napsat skript test.py takovy, aby to fungovalo takto:
    $ ./test.sh | ./test.py
    Tik
    Tik
    Tik
    Tik
    ^C 
    
    coz s tim vasim resenim nefunguje.
    13.2.2010 20:54 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Môžeš vyskúšať
    while True:
        print sys.stdin.readline()
    (funkcia readline ale na konci reťazca necháva znak \n)
    14.2.2010 09:23 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Ok, dekuji, toto opravdu funguje, pro odstraneni zbytecneho \n jsem pouzil vypise pres [0:-1]. Narazil jsem vsak na dalsi problem. Ten skript s "Tik" byl jen demonstracni, ve skutenosti to pouzivam takto:

    $ sudo tcpdump -A -s 1400 'dst port 80' -i wlan0 | grep GET | ./skript.py

    Tedy vypisuji HTTP GET pozadavky, ktere litaji pres wlan0 rozhrani. V tomto pripade se nejedna o periodicke vypise a dany skript nefunguje:/ Vi prosim nekdo proc?

    Fuky avatar 14.2.2010 12:50 Fuky | skóre: 51 | blog: 4u
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin

    Skript funguje, ale data visí v bufferu a jelikož jich nepřišlo takové množství, aby se buffer vyprázdnil, tak si myslíš, že to nešlape. Nažeň tam víc dat a uvidíš, že to jde. Nejlépe by jsi udělal kdyby jsi přesně popsal co potřebuješ, aby se případně dalo nadhodit vhodnější řešení.

    14.2.2010 16:18 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    $ sudo tcpdump -A -s 1400 'dst port 80' -i wlan0 | grep GET
    
    Mi vypisuje jednotlive GET pozadavky, ktere chodi pres wlan0. Co radek, to pozadavek. Pozavek se do konzole vypise vzdy ihned pote co dorazi na wlan0 interface.

    Ja potrebuji pouze python script, ktery ty retezce (GET pozadavky) bude dostavat na stdin a ihned je vypisovat (pak skript samozrejme upravim, aby i neco s tema retezcema delal).

    Tzn, chci dosahnout toho, aby prikazy
    $ sudo tcpdump -A -s 1400 'dst port 80' -i wlan0 | grep GET
    
    i
    $ sudo tcpdump -A -s 1400 'dst port 80' -i wlan0 | grep GET | ./skript.py
    
    mely stejny vystup.
    Fuky avatar 14.2.2010 19:43 Fuky | skóre: 51 | blog: 4u
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin

    Šlo mi spíš o nějaké reálné nasazení, možná by Ti totiž místo tcpdump vyhovoval více přímo modul do Pythonu Pcapy (je součástí Lennyho, třeba bude přímo i v Tvé distibuci).

    15.2.2010 12:14 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    No jde mi o to v realnem case vypisovat do konzole HTTP GET pozadavky a ty rovnou prevadet do url DECODED podoby. pcapy se mi zda pro takovy jednoduchy pozadavek prilis slozity.
    14.2.2010 13:39 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    tcpdump -l

    viz tcpdump(8).
    14.2.2010 16:08 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Ani s timto mi to nefunguje:/
    14.2.2010 18:54 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Tak to máš nějaké rozbité. S
    import sys
    while True:
        print sys.stdin.readline().strip()
    
    musí
    tcpdump -l
    dělat totéž co
    tcpdump -l | ./test.py
    Tentokrát i ověřeno.
    14.2.2010 19:01 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    První tcpdump to -l samozřejmě nepotřebuje, protože výstup jde na terminál, který je řádkově bufferovaný. Ale neškodí tam.
    14.2.2010 00:14 azurIt | skóre: 35 | blog: zatial_bez_mena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Toto ti logicky nemoze ist, pretoze skript test.py sa spusti az potom, ako sa skript test.sh ukonci. Ten ale bude bezat navzdy.
    14.2.2010 19:00 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Toto je blud a kdyby to tak opravdu fungovalo, roury by byly dost naprd. To jen tak pro případ, že by tuto diskusi ještě někdo četl...
    Fuky avatar 14.2.2010 19:37 Fuky | skóre: 51 | blog: 4u
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Myslím, že došlo k nedorozumnění, AzurItovi šlo spíš o to, že fce readlines() vrátí svůj výsledek teprve po ukončení skriptu (přesněji uzavření jeho stdout), který plní stdin (druhého skriptu pomocí roury), a má v tom samozřejmě pravdu.
    14.2.2010 21:10 l4m4
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Pokud to tak myslel, tak to napsal dost nešťastně...

    V každém případě mě zklamalo for line in sys.stdin: ..., což mělo být nejčitější a nejpythonovější řešení. Konstrukce sice používá lazy evaluation, jenže souborové objekty kvůli efektivitě provádějí jakěsi vnitřní bufferování, takže člověk ty řádky stejně nedostane po jednom. Nezjistil jsem, jak/zda se dá vypnout.
    15.2.2010 12:55 Rezka Cervena
    Rozbalit Rozbalit vše Re: Python, prijem dat ze stdin
    Tak konecne vyreseno! Viz:
    sudo tcpdump -l -A -s 1400 'dst port 80' -i eth0 | grep --line-buffered GET | ./skript.py
    
    Dulezity je parametr -l u tcpdumpu a --line-buffered u grepu. Dekuji vsem za pomoc.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   Powered by Hosting 90 Server hosting
    © 1999-2013 Argonit s. r. o. Všechna práva vyhrazena.