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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

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

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

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

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 3
7.12. 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
7.12. 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 2
7.12. 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 8
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 27
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 798 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: basch script a podmínka

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

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.