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.
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 »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.
Č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.
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.
Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.
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…
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.
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.
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 »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
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
if ! checklog $LOGNAME ; thenMam 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
breakBtw, proc vubec pouzivat ciklus, kdyz stejne kontrolujes jen posledni radek ?
# better to run as www user and with mutt installedReally ?
# 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 ; thenProc 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..
SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)
Coze? Tak takhle urcite ne..
NN
! 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.
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 ... fia 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
Tiskni
Sdílej: