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

    Immich byl vydán v nové verzi 3.0.0. Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 3
    dnes 02:55 | IT novinky

    Společnost Juno Computers prodávající počítače s předinstalovaným Linuxem má nově v nabídce linuxový tablet Juno Tab 4 - WiFi. Na výběr je Debian, Ubuntu a Kubuntu. Předobjednat jej lze za 949 liber (26 500 korun).

    Ladislav Hagara | Komentářů: 0
    dnes 01:22 | Nová verze

    Podman (Pod Manager), nástroj umožňující vytvářet a provozovat kontejnery, aniž by uživatel potřeboval práva roota, byl vydán v nové major verzi 6.0.0. Přehled novinek v poznámkách k vydání. Řešena je i vážná bezpečnostní chyba CVE-2026-57231.

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | IT novinky

    Společnost Sony oznámila, že od ledna 2028 přestane vydávat nové hry pro PlayStation na fyzických discích. Všechny budoucí tituly budou dostupné výhradně v digitální podobě na PlayStation Store.

    Ladislav Hagara | Komentářů: 1
    včera 16:55 | Nová verze

    Google Chrome 150 byl prohlášen za stabilní. Nejnovější stabilní verze 150.0.7871.46 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 433 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Nová verze

    Soudní dvůr Evropské unie potvrdil rekordní pokutu 4,125 miliardy eur (100 miliard Kč) americké technologické firmě Google ze skupiny Alphabet. Pokutu firmě v roce 2018 vyměřila Evropská komise (EK) za to, že Google podle ní zneužívá operačního systému Android k potlačení konkurence na trhu vyhledávacích služeb.

    Ladislav Hagara | Komentářů: 17
    včera 12:44 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa povolila firmě Anthropic obnovit plný přístup klientů k modelům umělé inteligence (AI) Fable 5 a Mythos 5. Ty byly nedostupné bezmála tři týdny kvůli bezpečnostním obavám vlády, třebaže americké ministerstvo obchodu minulý pátek povolilo omezený přístup k modelu Mythos 5 pro některé „důvěryhodné“ domácí organizace.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Zajímavý článek

    Francúzska organizácia na ochranu spotrebiteľa, po viac než ôsmych rokoch skúmania, žaluje Epson za plánované zastarávanie tlačiarní. Súd sa začína dnes, 2. 7. 2026, vo francúzskom Nanterre.

    Vlado99 | Komentářů: 5
    včera 03:00 | Zajímavý software

    Erin Catto, autor open source 2D fyzikálního enginu Box2D (Wikipedie), představil nový 3D fyzikální engine Box3D. Engine je již používán ve hře The Legend of California.

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 4.0.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 2039 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: basch script a podmínka

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

    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.