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 13:33 | Komunita

    Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Zajímavý software

    Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.

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

    Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.

    karkar | Komentářů: 3
    24.10. 19:55 | Nová verze

    Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.

    Ladislav Hagara | Komentářů: 0
    24.10. 13:33 | Bezpečnostní upozornění

    Specialisté společnosti ESET zaznamenali útočnou kampaň, která cílí na uživatele a uživatelky v Česku a na Slovensku. Útočníci po telefonu zmanipulují oběť ke stažení falešné aplikace údajně od České národní banky (ČNB) nebo Národní banky Slovenska (NBS), přiložení platební karty k telefonu a zadání PINu. Malware poté v reálném čase přenese data z karty útočníkovi, který je bezkontaktně zneužije u bankomatu nebo na platebním terminálu.

    Ladislav Hagara | Komentářů: 14
    24.10. 13:22 | Upozornění

    V Ubuntu 25.10 byl balíček základních nástrojů gnu-coreutils nahrazen balíčkem rust-coreutils se základními nástroji přepsanými do Rustu. Ukázalo se, že nový "date" znefunkčnil automatickou aktualizaci. Pro obnovu je nutno balíček rust-coreutils manuálně aktualizovat.

    Ladislav Hagara | Komentářů: 12
    24.10. 04:55 | Komunita

    VST 3 je nově pod licencí MIT. S verzí 3.8.0 proběhlo přelicencování zdrojových kódů z licencí "Proprietary Steinberg VST3 License" a "General Public License (GPL) Version 3". VST (Virtual Studio Technology, Wikipedie) je softwarové rozhraní pro komunikaci mezi hostitelským programem a zásuvnými moduly (pluginy), kde tyto moduly slouží ke generování a úpravě digitálního audio signálu.

    Ladislav Hagara | Komentářů: 1
    24.10. 03:22 | Nová verze

    Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 25.10. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    23.10. 20:11 | Komunita

    V Londýně probíhá dvoudenní Ubuntu Summit 25.10. Na programu je řada zajímavých přednášek. Zhlédnout je lze také na YouTube (23. 10. a 24. 10.).

    Ladislav Hagara | Komentářů: 0
    23.10. 13:22 | Nová verze

    Gemini CLI umožňuje používání AI Gemini přímo v terminálu. Vydána byla verze 0.10.0.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (48%)
     (20%)
     (20%)
     (23%)
     (17%)
     (21%)
     (17%)
     (18%)
    Celkem 272 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: Python spouštění shellových skriptů

    15.3.2012 00:40 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Python spouštění shellových skriptů
    Přečteno: 694×
    Zdravím,

    tvořím v Pythonu (2.6.6) jednoduchý prográmek, který když dostane HTTP žádost na konkrétní URL, spustí určitou akci. Konkrétně, získá data z databáze, vyrobí konfigurační soubory pro firewall a dhcp podle šablon a resetuje tyto služby. S jednorázovými skripty (iptables) to funguje v pořádku, ale takto spuštěný dhcp-server se drží socketu, na kterém naslouchá rodič a když rodič z nějakého důvodu skončí, nemůžu ho znovu spustit protože cílový port už drží proces dhcp-serveru.

    Z toho co jsem se dočetl v dokumentaci, tak voláním subprocess.call() nebo subprocess.Popen() vždycky vyrobím potomka, ať už přes fork() nebo execvp(). Já ale potřebuju, aby se skript spustil v novém shellu jako nový proces, ne jako potomek toho to skriptu. Jde to vůbec nějak?

    Pro ukázku jsem vyrobil dva jednoduché skripty, aby bylo vidět, jak to celé (ne)funguje.

    foo.sh - spustí cokoliv co zadám v argumentu
    #!/bin/bash
    $1
    
    foo.py - vyrobí socket a spustí skript foo.sh
    import subprocess
    import socket
    import time
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('localhost',8080))
    s.listen(10)
    
    subprocess.call(['foo.sh', 'firefox'])
    
    time.sleep(30)
    
    Podle fuser, všechny procesy drží port 8080
    yenn@wintermute:~$ fuser -v 8080/tcp
                         USER        PID ACCESS COMMAND
    8080/tcp:            yenn       9825 F.... python
                         yenn       9826 F.... foo.sh
                         yenn       9827 F.... firefox
    
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Martin Matějek (tazatel))
    15.3.2012 10:23 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Python spouštění shellových skriptů
    Ja bych to videl takhle:
    
    subprocess.call(['./foo.sh', 'firefox'], close_fds = True)
    
    (ono je to v dokumentaci napsano dost zmatene).
    15.3.2012 16:49 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Rozbalit Rozbalit vše Re: Python spouštění shellových skriptů
    Tohle to vyřešilo, díky!
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!
    Řešení 1× (Martin Matějek (tazatel))
    rADOn avatar 15.3.2012 13:17 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Python spouštění shellových skriptů
    Dhcp server je démon. Démon je proces který se odpojil od tty a od svého předka resp. jeho předek je init. Na to je takovej postup který každý takový program ovládá a nemusíš se v tom vrtat. Démony nespoštěj přímo ale měj je nastarovaný initem a jen jim posílej signály. Většina démonů načte nový kofigurák když dostane HUP nebo USR1. Jako bonus ti to bude lépe fungovat i když dostaneš dva http requesty najednou.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    15.3.2012 17:08 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Rozbalit Rozbalit vše Re: Python spouštění shellových skriptů
    Debianovský init skript pro dhcpd s parametrem restart nebo force-reload dhcpd zastaví, znovu spustí a navíc ještě před spuštěním zkontroluje konfigurační soubor, takže zůstanu u volání init skriptu. Ale díky moc za rady.

    PS: O zpracování http requestů se stará webserver (Python + CherryPy), takže to by neměl být problém.
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!
    rADOn avatar 16.3.2012 13:44 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Python spouštění shellových skriptů
    Koukám že dhcpd opravdu neumí načíst konfigurák na signál, takže se omlouvám za vnášení chaosu. Všichni ostatní démoni co znám to umí.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco

    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.