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:00 | Bezpečnostní upozornění

    Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.

    Ladislav Hagara | Komentářů: 4
    dnes 03:33 | Zajímavý software

    Nightingale je open-source karaoke aplikace, která z jakékoliv písničky lokálního alba (včetně videí) dokáže oddělit vokály, získat text a vše přehrát se synchronizací na úrovni jednotlivých slov a hodnocením intonace. Pro separaci vokálů využívá UVR Karaoke model s Demucs od Mety, texty písní stahuje z lrclib.net (LRCLIB), případně extrahuje pomocí whisperX, který rovněž využívá k načasování slov. V případě audiosouborů aplikace na

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    včera 18:22 | Nová verze

    Po půl roce vývoje od vydání verze 49 bylo vydáno GNOME 50 s kódovým názvem Tokyo (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 14
    včera 17:22 | Nová verze

    Článek na stránkách Fedora Magazinu informuje o vydání Fedora Asahi Remixu 43, tj. linuxové distribuce pro Apple Silicon vycházející z Fedora Linuxu 43.

    Ladislav Hagara | Komentářů: 1
    včera 13:33 | Pozvánky

    Byl zveřejněn program konference Installfest 2026. Konference proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13. Vstup zdarma.

    Ladislav Hagara | Komentářů: 3
    včera 03:55 | Nová verze

    Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.

    Ladislav Hagara | Komentářů: 12
    17.3. 23:55 | Nová verze

    Byla vydána nová verze 260 správce systému a služeb systemd (Wikipedie, GitHub). Odstraněna byla podpora skriptů System V. Aktualizovány byly závislosti. Minimální verze Linuxu z 5.4 na 5.10, OpenSSL z 1.1.0 na 3.0.0, Pythonu z 3.7.0 na 3.9.0…

    Ladislav Hagara | Komentářů: 27
    17.3. 18:11 | Nová verze

    Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    17.3. 04:55 | Nová verze

    Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.

    Ladislav Hagara | Komentářů: 12
    17.3. 04:33 | Zajímavý projekt

    Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,

    … více »
    NUKE GAZA! 🎆 | Komentářů: 49
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (1%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1112 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: basch script a podmínka

    24.5.2011 19:12 Martin
    basch script a podmínka
    Přečteno: 367×

    Dobrý den, potřeboval bych poradit se scriptem. Mám script pomocí kterého do souboru zapíšu [OK]. Pokud je tato podmínka splněna tak se vše ukončí se zápisem do logu. Pokud místo "echo "[OK] 2011-05-24 18:23:50" > $LOGNAME" zadám "echo "[OOOK] 2011-05-24 18:23:50" > $LOGNAME, tak vše taky proběhne tak jak má a zapíše se do error logu.

    Potřeboval bych udělat to aby když bude vše OK, tak aby se mi spustil ještě jedena část a to konkrétně toto: echo "[PAIR] 2011-05-24 18:23:50" > $LOGNAME2 ale jen v případě toho že předchozí podmínka bude OK. Jinak ať se vše okončí tím že se zapíše do error logu error, ale logname2 se nevytvoří.

     

    cat test.sh
    #!/bin/bash

    COMPANY="Test"
    SLEEP="2"
    TRIES="3"

    # let it "as is" until you know what you're doing
    SCRIPTNAME="$0"
    SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)
    LOGNAME="$SCRIPTPATH/log/stop_$$.log"
    LOGNAME2="$SCRIPTPATH/log/pair-_$$.log"
    LASTSTATUS="$SCRIPTPATH/log/laststatus.log"
    ERRLOGS="$SCRIPTPATH/log/errors"
    OKLOGS="$SCRIPTPATH/log/allright"
    COUNT="0"


    checklog(){
    if [ ! -f $1 ] ; then
    return 1
    elif [ $(tail -n 1 $1 | grep -c '^\[WARNING\]') -eq 1 ] ; then
    return 2
    elif [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 0 ] ; then
    return 1
    else
    return 0
    fi
    }

    # better to run as www user and with mutt installed
    [ -d $ERRLOGS ] || mkdir -p $ERRLOGS
    [ -d $OKLOGS ] || mkdir -p $OKLOGS

    while [ $COUNT -lt $TRIES ]; do
    if ! checklog $LOGNAME ; then

    # real stop
    echo "[OK] 2011-05-24 18:23:50" > $LOGNAME

    # take some sleep after unsuccessful run
    if [ $COUNT -gt 0 ] ; then
    sleep $SLEEP
    fi
    # raise counter
    COUNT=$((COUNT + 1))
    else
    # break counter
    COUNT=$((TRIES + 1))
    fi
    done

    [ -f $LOGNAME ] && TAIL=$(tail -n1 $LOGNAME)

    # alert mail in case of any problem (and exit)
    if ! checklog $LOGNAME ; then
    echo -e "$COMPANY stop was not proceeded properly: $TAIL"  gzip -9 $LOGNAME
    gzip -9 $LOGNAME
    [ -d $ERRLOGS ] && mv $LOGNAME.gz $ERRLOGS/$(date +%Y%m%d_%H%M).gz
    echo "$TAIL" > $LASTSTATUS
    exit 0
    fi

    # delete logfile in the end of successful run
    if [ -f $LOGNAME ] ; then
    gzip -9 $LOGNAME
    [ -d $OKLOGS ] && mv $LOGNAME.gz $OKLOGS/$(date +%Y%m%d_%H%M).gz
    fi

    # "OK mail" in case of successful run after previous error run
    if ! checklog $LASTSTATUS ; then
    echo -e "$COMPANY stop is all right now.\n\nScript exited with [OK] string. Number of tries: $TRIES. Here is last line from script: $TAIL"
    fi

    # log last output line to statusfile for test and "OK mail" eventually
    echo "$TAIL" > $LASTSTATUS

    exit 0

    Odpovědi

    24.5.2011 21:12 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
    Rozbalit Rozbalit vše Re: basch script a podmínka
    nevím jestli sem úplně pochopil co potřebuješ, ale takhle by to mělo fungovat n?
    cat test.sh 
    #!/bin/bash
    COMPANY="Test"
    SLEEP="2"
    TRIES="3"
    
    # let it "as is" until you know what you're doing
    SCRIPTNAME="$0"
    SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)
    LOGNAME="$SCRIPTPATH/log/stop_$$.log"
    LOGNAME2="$SCRIPTPATH/log/pair-_$$.log"
    LASTSTATUS="$SCRIPTPATH/log/laststatus.log"
    ERRLOGS="$SCRIPTPATH/log/errors"
    OKLOGS="$SCRIPTPATH/log/allright"
    COUNT="0"
    
    
    checklog(){
    if [ ! -f $1 ] ; then
    return 1
    elif [ $(tail -n 1 $1 | grep -c '^\[WARNING\]') -eq 1 ] ; then
    return 2
    elif [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 0 ] ; then
    return 1
    else
    return 0
    fi
    }
    
    # better to run as www user and with mutt installed
    [ -d $ERRLOGS ] || mkdir -p $ERRLOGS
    [ -d $OKLOGS ] || mkdir -p $OKLOGS
    
    while [ $COUNT -lt $TRIES ]; do
    if ! checklog $LOGNAME ; then
    
    # real stop
    echo "[OK] 2011-05-24 18:23:50" > $LOGNAME
    echo "[PAIR] 2011-05-24 18:23:50" > $LOGNAME2
    
    # take some sleep after unsuccessful run
    if [ $COUNT -gt 0 ] ; then
    sleep $SLEEP
    fi
    # raise counter
    COUNT=$((COUNT + 1))
    else
    # break counter
    COUNT=$((TRIES + 1))
    fi
    done
    
    [ -f $LOGNAME ] && TAIL=$(tail -n1 $LOGNAME)
    
    # alert mail in case of any problem (and exit)
    if ! checklog $LOGNAME ; then
    echo -e "$COMPANY stop was not proceeded properly: $TAIL"  gzip -9 $LOGNAME
    gzip -9 $LOGNAME
    [ -d $ERRLOGS ] && mv $LOGNAME.gz $ERRLOGS/$(date +%Y%m%d_%H%M).gz
    echo "$TAIL" > $LASTSTATUS
    exit 0
    fi
    
    # delete logfile in the end of successful run
    if [ -f $LOGNAME ] ; then
    gzip -9 $LOGNAME
    [ -d $OKLOGS ] && mv $LOGNAME.gz $OKLOGS/$(date +%Y%m%d_%H%M).gz
    fi
    
    # "OK mail" in case of successful run after previous error run
    if ! checklog $LASTSTATUS ; then
    echo -e "$COMPANY stop is all right now.\n\nScript exited with [OK] string. Number of tries: $TRIES. Here is last line from script: $TAIL"
    fi
    
    # log last output line to statusfile for test and "OK mail" eventually
    echo "$TAIL" > $LASTSTATUS
    
    exit 0
    
    priste to prosim dej jako formatovanej kod, lip se to pak cte ;-)
    Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.
    24.5.2011 21:20 Martin
    Rozbalit Rozbalit vše Re: basch script a podmínka
    ne to není ono co potřebuji, potřebuji aby se to druhé echo vypsalo jen v případě že ta první podmínka bude OK. Pokud dopadne špatně tak aby se to druhé echo vůbec nezapsalo.
    24.5.2011 22:07 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
    Rozbalit Rozbalit vše Re: basch script a podmínka
    specifikuj prosim tu "prvni podminku"
    Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.
    24.5.2011 21:30 NN
    Rozbalit Rozbalit vše Re: basch script a podmínka
    if ! checklog $LOGNAME ; then
    Mam pocit, ze tahle podminka vubec nenastane, jelikoz funkce checklog vzdy vrati hodnotu a tudiz je vzdy true ,ale mozna se pletu.
    else
    # break counter
    COUNT=$((TRIES + 1))
    Zaprve na co cekat (?) a zadruhe je jednoduzsi pouzit
    break
    Btw, proc vubec pouzivat ciklus, kdyz stejne kontrolujes jen posledni radek ?
    # better to run as www user and with mutt installed
    Really ?
    # alert mail in case of any problem (and exit)
    if ! checklog $LOGNAME ; then
    
    # "OK mail" in case of successful run after previous error run
    if ! checklog $LASTSTATUS ; then
    
    Proc provadet tu samou vec trikrat, kdyz se da udelat jen nednou ?
    SCRIPTNAME="$0"
    TRIES="3"
    Na co pouzivat promenne, kdyz je pouzijes jen jednou ?

    silenost,

    NN

    PS: pouzivet tag pre diky..
    24.5.2011 22:36 NN
    Rozbalit Rozbalit vše Re: basch script a podmínka
    SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)
    Coze? Tak takhle urcite ne..

    NN
    25.5.2011 05:34 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: basch script a podmínka
    Podmínka ! checklog foo nastane v závislosti na návratové hodnotě funkce checklog (nula versus nenulová hodnota).

    Proměnné nejí něco, co "nahrazuje věci které se dělají víckrát". Proměnné jsou i symbolická jména a rovněž mohou plnit funkci konfiguračních proměnných.

    25.5.2011 06:03 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: basch script a podmínka
    Vidím že tam nikde nepoužíváte žádné stavové proměnné, rozhodně checklog by bylo lepší volat jen jednou, možná by pomohlo něco jako:
    company_exited_flawlessly=false
    
    if checklog $LOGNAME ; then
    company_exited_flawlessly=true
    else
    company_exited_flawlessly=false
    fi
    
    (nebo víc skripťácky:
    checklog $LOGNAME && company_exited_flawlessly=true
    )
    
    if $company_exited_flawlessly; then
    ...
    else
    ...
    fi
    a to i v jiných místech.

    Pro ukončení smyčky lépe použít break (jak radí NN).

    Funkci checklog bych zlidštil a asi i nějak přejmenoval, aby už její název evokoval, jestli se v případě úspěchu očekává 0 nebo spíš 1. Dost to pomáhá čitelnosti, zvlášť pokud výsledek ještě navíc negujete (! checklog). Pokud by takových funkciček a podmínek bylo víc, umí to pokazit den.
    log_ok(){
    if [ -f $1 ] ; then
      if [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 1 ] ; then
         return 0
       fi
    fi
    return 1
    }
    
    log_ok $LOGNAME && company_exited_flawlessly=true
    
    P.S. Jestli jsem funkci checklog někde použil obráceně tak se omlouvám, připadá mi že ji máte opačně, ale možná že ne, takhle po ránu bych fakt potřeboval spíš log_ok $LOGNAME && company_exited_flawlessly=true

    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.