OpenWrt 10: webovy WakeOnLan – busybox CGI

Posledni dobou jsem si zvykl pouzivat vzdalenou plochu na domacim PC. Kdyz jsem mimo domov, mam jen pomaly netbook, se kterym se pripojuju na vykonny domaci pocitac. Pouzivam asi nejlepsi NoMachine NX (o tom nekdy priste). Problem je zapnuti pocitace. Trvale zapnuty ho nechat nechci, elektrina je draha. Proto pouzivam Wake on LAN. WoL je nutne posilat ze zarizeni na stejne siti, idelane z routeru. Driv jsem se prihlasoval na router pres SSH, ale to neni pohodlne. Proto jsem si napsal webove klikatko. V OpenWrt routeru mam jen 4MB flash, proto neslo puzivat PHP. Zvolil jsem shell. Bash se take nevesl, takze busybox.

Celý příspěvek

Ubiquiti – ziskavani informaci pres SNMP a logovani do syslogu

Mam 802.11an 5GHz WiFi spoj mezi dvema domy. Na jedne strane je UBNT NanoBeam M5 16 (AP) a na druhe UBNT NanoBridge M5 (klient).

Obcas se stava, ze TX/RX Rate spadne ze 130/130Mbps na 54/54Mbps. Pomuze jenom restart zarizeni (asi problem nejnovejsiho firmware). Proto jsem chtel logovat aktualni hodnoty TX/RX Rate do syslogu na linuxovem serveru. Celý příspěvek

WiFi s PSK a EAP v CentOS 6 – FreeRADIUS

V roce 2012 jsem ve skole (UHK) zpracoval vyberovy projekt, jehoz jedna cast se tykala vytvoreni WiFi AP na pocitaci s CentOS 6 se sdilenym heslem (WPA PSK) a 802.1x (WPA EAP) vcetne zakladni instalace a nastaveni FreeRADIUS serveru. Cely clanek je zpracovany jako skolni cviceni. Sice je uz 3 roky stary, ale vetsina veci jde stale pouzit. Bylo mi lito nechat text zapadnout, proto ho davam nyni na web.
Tady je ke stazeni 30 strankove PDF, je lepe citelne, nez clanek nize. Ten jsem vytvoril pouhym vlozenim celeho PDF do clanku na webu. Doporucuji tedy radeji stahnou ke cteni PDF.

 

Celý příspěvek

Python: kompilace do nativniho kodu platformy

Python je momentalne muj nejoblibenejsi jazyk. Je rychly na prototypovani, umoznuje psat kratke skripty, velke GUI aplikace, webove stranky,…
Jednou z jeho nejvetsich (ne)vyhod je, ze jde o interpretovany jazyk. Tudiz je pomalejsi, nez jazyky kompilovane a kazdy muze videt zdrojovy kod.

Problem se nastesti da relativne snadno vyresit kompilaci.

Nebudu to rozebirat nijak do hloubky. Kdo chce podrobnosti, odkazu ho na pouzite zdroje v zaveru a na Google. Jde pouze o ukazani moznosti.

Prvni ukazka. Jednoduchy program na vypis aktualniho casu. Po spusteni jako samostatny program vypise cas a ukonci se. Pri importu jako modul v pythonu nevypise nic, ceka na zavolani funkce cas().

 

Prvni prikaz (cython) vegeneruje z pythoniho zdrojoveho kodu C zdrojovy kod. Je tezko clovekem citelny, protoze je generovany. Parametr embed zajisti pridani main() funkce. Cython dokaze generovat C a C++ zdrojaky a pouzivat Python2, nebo Python3.

Pote je mozne vygenerovany C soubor pomoci gcc zkompilovat. Stripnuta binarka ma jenom 37kB.

Pri spusteni jako samotny program (./prvni) vypise _RUN_. Zavislosti (viz vystup ldd) jsou bezne linuxove knihovny plus navic libpython.

 

Druha ukazka je o trochu slozitejsi. Pomoci skvele knihovny requests stahne JSON z meteostanice a vypise aktualni teplotu.

 

 

Mezi hodne zajimave vyhody kompilace Pythonu patri i mozne zrychleni. Python je dynamicky silne typovany jazyk. Neustale zjistovani a kontrola typu zpusobuje znatelne zpomaleni behu programu. Zvlast u nekterych vypoctu je rozdil obrovsky (proto se na vypocty ma pouzivat NumPy). Proto umoznuje Cython nadefinovat promennym datove typy.

Hodne zajimave je toto PDF. Urcite doporucuji precist. Z neho je take nasledujici ukazka:

 

Aneb jak se pise na oficialnim webu Cythonu: „Cython is Python with C data types“ (Cython je Python s C datovymi typy).

 

Pouzite zdroje:

OpenWrt 9: ISC DHCPD – 100% funkcni DHCP server

OpenWrt pouziva na DNS a DHCP server program DNSMASQ. Je maly, jednoduchy a vetsinou funguje. Prave to vetsinou je problem. Uz dvakrat se mi stalo, ze dnsmasq neprideloval IP adresy. Konfigurace byla stejna, jako na spouste dalsich routeru. Ani na oficialnim foru OpenWrt se mi nepodarilo nalezt reseni. Problem jsem vyresil instalaci ISC DHCPD serveru.

Celý příspěvek