Rodina jednodeskových počítačů Orange Pi se rozrostla (𝕏) o Orange Pi 5 Ultra.
Mobilní Datovka, tj. svobodná aplikace pro přístup k datovým schránkám pro zařízení s operačním systémem iOS a Android, byla vydána v nové verzi 2.2.0. Nově lze nastavit vlastní obrázky pro jednotlivé datové schránky pro jejich lepší identifikaci v seznamu schránek. Přidán byl editor vnitřních nastavení aplikace, který slouží jako přehled všech hodnot, které aplikace udržuje.
Společnost DuckDuckGo stojící za stejnojmenným vyhledávačem letos věnovala 1,1 milionu dolarů na podporu digitálních práv, online soukromí a lepšího internetového ekosystému. Peníze byly rozděleny mezi Electronic Frontier Foundation (EFF), Public Knowledge, ARTICLE 19, Demand Progress, European Digital Rights (EDRi), Fight for the Future, The Markup, OpenMedia, Restore the Fourth, Signal, Surveillance Technology Oversight
… více »LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl vydán ve verzi 1.2.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Vypíchnut je import knihoven KiCadu. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Při mezinárodní operaci byla zablokována pokročilá služba pro šifrovanou komunikaci MATRIX, oznámil úřad pro evropskou justiční spolupráci Eurojust. K uzavření služby podle něj vedlo vyšetřování společného týmu, na němž se podílely francouzské a nizozemské úřady a který byl zřízen při Eurojustu. Službu podle něj využívaly kriminální živly. Tato služba MATRIX nemá nic společného s nadací Matrix a protokolem Matrix.
Národní filmový archiv spustil nový YouTube kanál Filmová klasika, který veřejnosti postupně zpřístupní vybrané české filmy. Nabídne především tituly, které obecenstvo v běžné nabídce televizí nebo VOD platforem nenajde. Dnes v 18:00 kanál odstartoval kultovním snímkem Kouř režiséra Tomáše Vorla. Divačky a diváci se pak každý týden budou moci těšit na dva nové filmy, které se na novém kanálu objeví vždy v úterý a v pátek. Spolu s Kouřem nabídla Filmová klasika ještě další desítku filmů ke zhlédnutí.
Příspěvek na blogu Raspberry Pi informuje, že Steam Link běží už i na Raspberry Pi 5. Nejnovější verze podporuje H.264 (1080p s 144 FPS) i HEVC (4K s 60 FPS a 1080p s 240 FPS).
Na čem aktuálně pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Byla vydána nová verze 14.2 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Byla vydána nová stabilní verze 24.11 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Vicuña. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 057 049 006 Pre-fail Always - 140496120 3 Spin_Up_Time 0x0003 099 096 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 189 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 063 060 030 Pre-fail Always - 519947024875 9 Power_On_Hours 0x0032 073 073 000 Old_age Always - 24065 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 320 194 Temperature_Celsius 0x0022 043 051 000 Old_age Always - 43 195 Hardware_ECC_Recovered 0x001a 057 049 000 Old_age Always - 140496120 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 194 000 Old_age Always - 10 200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0 202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0Kus scriptu:
for diskk in a b; do for b in `/usr/sbin/smartctl -A /dev/hd${diskk} | grep '^[ 0-9][ 0-9][0-9]' | awk '{print $10 ";"}'`; do echo -n $b >> hdd_smart.csv ; done; done;Nejsem v BASHi tak zběhlej a proto netuším co by bylo nejlepší a nejednoduší k použití. Díky moc za každou pomoc nebo nasměrování.
...
for x in `/usr/sbin/smartctl -A /dev/hd${diskk} | grep -v ID# | sed "s%^[ ]*\([0-9]*\).*%\1%"`; do echo -n $x\; ; done
?
for i in a b; do smartctl -A "/dev/hd$i" | awk '
$1>=1 && $1 <=255 {a[$1]=$10}
END {
for(i=1;i<=255;i++)
{
if(a[i])
{printf "%d", a[i]}
printf ";"
}
}';
echo;
done
Tento script sice udělá skoro vše co potřebuji, ale je tam chyba s kterou si nevím rady
Výpis scriptu:143198173;;;189;;;519947058931;;24068;;;320;;Jak vidíte tak hodnota (0) s ID číslem 3 v buňce není vůbec. Mělo by to vypadat:
143198173;0;189;;;519947058931;;24068;0;320;;Nevíte jak doplnit script aby vypisoval i tu nulu do buňky? Díky moc za pomoc.
#!/usr/bin/python import subprocess values = ['' for i in range(256)] process = subprocess.Popen(['smartctl', '-A', '/dev/sda'], stdout = subprocess.PIPE) for line in process.stdout: splitted = line.split() try: id = int(splitted[0]) raw_value = int(splitted[9]) except ValueError: continue except IndexError: continue values[id - 1] = '%d' %raw_value print ';'.join(values)Udělá to spoustu čísel a středníků, např.
24771859;;0;74;0;;685596218;;13667;0;;122;;;;;; atd.Je to tak správně?
#!/usr/bin/python import subprocess, time class Smart: def __init__(self, diskk): self.diskk = diskk values = ['' for i in range(256)] process = subprocess.Popen(['smartctl', '-a', '/dev/' + diskk], stdout = subprocess.PIPE) self.alllines = [] for line in process.stdout: self.alllines.append(line) splitted = line.split() if 'Serial Number:' in line: self.sn = splitted[-1] try: id = int(splitted[0]) raw_value = int(splitted[9]) except ValueError: continue except IndexError: continue values[id - 1] = '%d' %raw_value if splitted[1] == 'Temperature_Celsius': self.temperature = raw_value self.rawvalues = ';'.join(values) self.now_int = int(time.time()) def pis_teplotu(self): cas_disk_teplota = '%d, %s, %d\n' %(self.now_int, self.diskk, self.temperature) print cas_disk_teplota file('teploty.csv', 'a').write(cas_disk_teplota) def pis_celk_smart(self): filename = '%s_%s_%d.txt' %(self.diskk, self.sn, self.now_int) print filename file(filename, 'w').writelines(self.alllines) def pis_raw_values(self): line = '%d,%s,%s\n' %(self.now_int, self.sn, self.rawvalues) print line file('raw.csv', 'a').write(line) while True: disk = Smart('sda') disk.pis_teplotu() disk.pis_celk_smart() disk.pis_raw_values() time.sleep(10)Ten interval jsem plácl deset sekund. Klidně to zahoď, ale dělá to aspoň zhruba to co má?
Traceback (most recent call last): File "test", line 2, in ? import subprocess, time ImportError: No module named subprocessNevíš čím to může být ? Jak říkám Python neumím vůbec.
# RAW VALUE for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23; do for raw in `/usr/sbin/smartctl -A -d 3ware,${i} | awk ' BEGIN { for(i=1;i<254;i++) a[i]=-1 } $1>=1 && $1<=253 { a[$1]=$10 } END { for(i=1;i<254;i++) { if(a[i]>=0) printf "%d", a[i]; printf ";" } }'`; do for sn in `/usr/sbin/smartctl -a -d 3ware,${i} | grep "Serial Number" | awk '{print $3}' `; do echo -n $cas ";" >> testy/hdd_smart.csv | echo -n $sn ";" >> testy/hdd_smart.csv; echo -n $raw >> testy/hdd_smart.csv; echo "" >> testy/hdd_smart.csv; done; done; doneDěkuji všem za pomoc při vytváření tohoto kusu scriptu.
for raw in `cokoli`Je velmi velmi velmi špatný nápad!
# RAW VALUE for((i=0; i<24; i++)) do raw="$(/usr/sbin/smartctl -A -d 3ware,${i} | awk 'BEGIN { for(i=1;i<254;i++) a[i]=-1 } $1>=1 && $1<=253 { a[$1]=$10 } END { for(i=1;i<254;i++) { if(a[i]>=0) printf "%d", a[i]; print ";" } }')" sn="$(/usr/sbin/smartctl -a -d 3ware,${i} | awk '/Serial Number/ {print $3}')" echo "$cas;$sn;$raw" >> testy/hdd_smart.csv done
Smím vědět proč? Platí to pro tenhle konkrétní případ nebo všeobecně (čemuž se mi nechce věřit)? Kuji.for raw in `cokoli`
Je velmi velmi velmi špatný nápad!
for i in `ls *.txt`je naprosto nevhodné, protože to může zhavarovat na velikost ve starších verzích shellu, nebo nějakém minimalistickém, např busybox. A pak to pěkně rozbije jen hloupá mezera v názvu souboru nebo adresáře. Přitom to jde krásně napsat
for i in *.txtSekvence
for i in `seq 1 2 10`jde jednoduše nahradit
for((i=1;i<=10;i+=2))A všechny ty
for i in `cokoli`jde nahradit bezpečnějším
cokoli | while read i
( IFS=$'\n'; for i in $(ls *.txt); … )V žádném případě netvrdím, že je to lepší varianta než
in *.txtale s tím si zase nevystačím ve složitějších selekcích a v situaci, kdy nepůjde o cyklus přes soubory/adresáře.
... ale s tím si zase nevystačím ve složitějších selekcích a v situaci, kdy nepůjde o cyklus přes soubory/adresáře.Na složitější selekce máme
find
+ xargs
a nebo while read
for i in a b; do smartctl -A "/dev/hd$i" | awk ' BEGIN { for(i=1;i<256;i++) a[i]=-1 } $1>=1 && $1<=255 { a[$1]=$10 } END { for(i=1;i<256;i++) { if(a[i]>=0) printf "%d", a[i]; printf ";" } }' echo done
Tiskni Sdílej: