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 04:55 | Nová verze

    Byl vydán Debian GNU/Hurd 2025. Jedná se o port Debianu s jádrem Hurd místo obvyklého Linuxu.

    Ladislav Hagara | Komentářů: 0
    dnes 02:44 | Komunita

    V sobotu 9. srpna uplynulo přesně 20 let od oznámení projektu openSUSE na konferenci LinuxWorld v San Franciscu. Pokuď máte archivní nebo nějakým způsobem zajímavé fotky s openSUSE, můžete se o ně s námi podělit.

    lkocman | Komentářů: 4
    9.8. 21:11 | Nová verze

    Byl vydán Debian 13 s kódovým názvem Trixie. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 4
    9.8. 15:55 | Zajímavý software

    WLED je open-source firmware pro ESP8266/ESP32, který umožňuje Wi-Fi ovládání adresovatelných LED pásků se stovkami efektů, synchronizací, audioreaktivním módem a Home-Assistant integrací. Je založen na Arduino frameworku.

    Indiánský lotr | Komentářů: 0
    8.8. 15:33 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.8.

    Ladislav Hagara | Komentářů: 8
    8.8. 14:22 | IT novinky

    Herní studio Hangar 13 vydalo novou Mafii. Mafia: Domovina je zasazena do krutého sicilského podsvětí na začátku 20. století. Na ProtonDB je zatím bez záznamu.

    Ladislav Hagara | Komentářů: 1
    8.8. 13:22 | IT novinky

    Operátor O2 má opět problémy. Jako omluvu za pondělní zhoršenou dostupnost služeb dal všem zákazníkům poukaz v hodnotě 300 Kč na nákup telefonu nebo příslušenství.

    Ladislav Hagara | Komentářů: 8
    8.8. 05:55 | IT novinky

    Společnost OpenAI představila GPT-5 (YouTube).

    Ladislav Hagara | Komentářů: 2
    8.8. 05:00 | Nová verze

    Byla vydána (𝕏) červencová aktualizace aneb nová verze 1.103 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.103 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    7.8. 17:33 | IT novinky

    Americký prezident Donald Trump vyzval nového generálního ředitele firmy na výrobu čipů Intel, aby odstoupil. Prezident to zdůvodnil vazbami nového šéfa Lip-Bu Tana na čínské firmy.

    Ladislav Hagara | Komentářů: 13
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (46%)
     (20%)
     (5%)
     (6%)
     (3%)
     (1%)
     (1%)
     (18%)
    Celkem 327 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    LDAP: šablony pro LDIF

    11.1.2007 02:02 | Přečteno: 1883× | Linux | Výběrový blog | poslední úprava: 11.1.2007 03:54

    V poslední mě zajímá LDAP v pozici zdroje dat pro DHCP, DNS, atd... Do LDAP databáze je potřeba často hromadně sypat data získaná skriptem, ve formátu LDIF. Příklad záznamu v LDIFu:

    dn: cn=lenovo,cn=192.168.0.0,cn=DHCP Config,dc=firma,dc=cz
    cn: lenovo
    dhcpHWAddress: ethernet XX:YY:XX:YY:XX:YY
    dhcpStatements: fixed-address 192.168.0.10
    objectClass: top
    objectClass: dhcpHost
    

    Kostru záznamu jednoduše popíšeme šablonou (soubor dhcphost.tpl):

    @include base.conf
    @include net.conf
    dn: cn=%HOSTNAME%,cn=%SUBNETNUMBER%,cn=DHCP Config,%BASEDN%
    cn: %HOSTNAME%
    dhcpHWAddress: ethernet %MACADDRESS%
    dhcpStatements: fixed-address %IPHOSTNUMBER%
    objectClass: top
    objectClass: dhcpHost
    

    ... kde proměnné jsou rozlišeny procenty. Některé parametry jako maska podsítě a basedn jsou neměnné, uložíme je do souboru base.conf:

    %BASEDN%        dc=firma,dc=cz
    

    ...a net.conf:

    %SUBNETNUMBER%  192.168.0.0
    %SUBNETMASK%    255.255.255.0
    %DHCPSERVER%    server1
    

    Následující skript (soubor makeldif.sh) generuje LDIFy:

    #!/bin/bash
    
    #check if file exists
    check_file()
    {
            if [ ! -e $1 ]; then
                    die "File doesn't exist: $1"
            fi
    }
    
    #include definitions from file
    include()
    {
            include_file=$1
            check_file $include_file
    
            #read line by line
            grep -v '#' $include_file | while read line; do
                    create_regexp   "$(echo $line | awk '{print $1}')" \
                                    "$(echo $line | awk '{print $2}')"
            done
    }
    
    #create regular expression
    create_regexp()
    {
            echo -n "s/$1/$2/g;" >> $regexp_file
    }
    
    #Show usage informations and exit
    die()
    {
            echo $1
            echo "Usage: $0 [parameters] template_file" > /dev/stderr
            echo "Parameters: %VARIABLE1% value1 %VARIABLE2% value2 ..." > /dev/stderr
            exit 1
    }
    
    regexp_file=regexp.tmp
    rm -f $regexp_file
    
    #exclude last param
    param_count=$(expr $# - 1)
    
    #check if params count is correct
    if [ $(expr $param_count % 2) -ne 0 ]; then
            die "Wrong parameters: $@"
    fi
    
    #read command-line params and create regexp from them
    for param in $(seq 1 2 $param_count); do
            create_regexp $1 $2
            shift; shift
    done
    
    template_file=$1
    check_file $template_file
    
    #include all files in this directive: @include filename
    include_files="$(grep '@include' $template_file | awk '{print $2}')"
    for include_file in $include_files ; do
            include $include_file
    done
    
    #read template_file and process it using sed and regexp from $regexp_file
    grep -v '@include' $template_file | sed "$(cat $regexp_file)"
    exit $?
    

    Voláním příkazu:

    ./makeldif.sh %HOSTNAME% lenovo %MACADDRESS% XX:YY:XX:YY:XX:YY %IPHOSTNUMBER% 192.160.0.10 dhcphost.tpl
    

    ... vygenerujeme nahoře uvedený LDIF. Toto je interface pro generování LDIFů. Teď můžeme jednoduše generovat podobné LDIFy např. takto:

    #!/bin/bash
    
    ip=$(/sbin/ifconfig | head -2 | grep inet | awk '{print $2}' | cut -d : -f 2)
    mac=$(/sbin/ifconfig | head -1 | awk '{print $5}')
    
    ./makeldif.sh %HOSTNAME% $HOSTNAME %MACADDRESS% $mac %IPHOSTNUMBER% $ip dhcphost.tpl
    

    Skriptů bylo pro dnešek dost a vy si je můžete všechny stáhnout zde a vyzkoušet. Až mě zas něco napadne, tak to plácnu do blogu... ;-)

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    11.1.2007 07:13 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: LDAP: šablony pro LDIF
    jenom mi to pripomelo: neznate nekdo nastroj ktery umoznuje pohodlne tahat data z ldapu/ldif a poradi si s base64 polozkami - zatim to resim dost hnusnym skryptem (dalsi nepekna vec je to, ze nektere polozky jsou na vice radku)
    never use rm after eight
    11.1.2007 10:37 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: LDAP: šablony pro LDIF
    python-ldap? Commandline nástroje z ldap-utils jsou opravdu dosti nepříjemné. ldapsearch umí ten base64 výstup pro non-ascii nějakým switchem vypnout.
    Táto, ty de byl? V práci, já debil.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.