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 07:00 | Nová verze

Byla vydána diaspora* ve verzi 0.7.0.0. Jedná se o svobodný software, který slouží jako osobní webový server pro poskytování služeb sociální sítě (Wikipedie). Přehled novinek v příspěvku na blogu a na GitHubu. Sociální síť diaspora* byla před pěti lety předána komunitě.

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

Společnost Hardkernel stojící za jednodeskovými počítači ODROID představila na YouTube minipočítač určený pro domácí cloud ODROID-HC1 vycházející z ODROID-XU4. Minipočítač s kovovou krabičkou, do které stačí vložit 2 a půl palcový disk, lze koupit za 49 dolarů. ODROID-HC1 je stohovatelný.

Ladislav Hagara | Komentářů: 6
včera 16:22 | Nová verze

Byl vydán DB Browser for SQLite (sqlitebrowser) ve verzi 3.10.0. Nejnovější stabilní verze této grafické nadstavby nad relačním databázovým systémem SQLite (Wikipedie) přináší například integraci s DBHub.io, tj. platformou pro sdílení SQLite databází. Podrobnosti na GitHubu.

Ladislav Hagara | Komentářů: 1
včera 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 0
19.8. 13:44 | Zajímavý software

Evropská komise vydala novou verzi 1.4.0.1 svého open source v Javě naprogramovaného softwaru pro online průzkumy EUSurvey. Online dotazníky lze vytvářet na stránkách Evropské komise nebo si lze software stáhnout (zip a war) a nainstalovat lokálně. Zdrojové kódy jsou k dispozici pod licencí EUPL (European Union Public Licence).

Ladislav Hagara | Komentářů: 0
18.8. 23:55 | Komunita

Ubuntu 17.10 (Artful Aardvark) bude ve výchozím stavu zobrazovat Dok (Launcher). Jedná se o rozšíření GNOME Shellu Ubuntu Dock. To bylo forknuto z rozšíření Dash to Dock. Ukázka na YouTube [reddit].

Ladislav Hagara | Komentářů: 5
17.8. 15:33 | Nová verze

Byla vydána verze 17.08.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace kmag, kmousetool, kgoldrunner, kigo, konquest, kreversi, ksnakeduel, kspaceduel, ksudoku, kubrick, lskat a umbrello byly portovány na KDE Frameworks 5.

Ladislav Hagara | Komentářů: 0
17.8. 15:11 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2017-08-16 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Nejnovější Raspbian je založen na Debianu 9 Stretch. Přehled novinek v poznámkách k vydání. Řešena je také bezpečnostní chyba Broadpwn (CVE-2017-9417).

Ladislav Hagara | Komentářů: 1
17.8. 12:33 | Nová verze

Byla vydána verze 3.2.0 programu pro skicování, malování a úpravu obrázků Krita. Přehled novinek v poznámkách k vydání a na YouTube.

Ladislav Hagara | Komentářů: 0
17.8. 11:44 | IT novinky

Minulý týden na šampionátu The International 2017 byl představen bot, který poráží profesionální hráče počítačové hry Dota 2. V nejnovějším příspěvku na blogu se organizace OpenAI o projektu více rozepsala a zveřejnila videozáznamy několika soubojů.

Ladislav Hagara | Komentářů: 7
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (18%)
 (76%)
Celkem 365 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: BASH script - smartctl, csv, expr, awk

    9.7.2007 10:07 D3d
    BASH script - smartctl, csv, expr, awk
    Přečteno: 2873×
    Dobrý den, Rád bych Vás požádal o pomoc s dotvořením scriptu pro testování smartctl. Script provádí výpis smartctl do csv souboru. Pomocí awk exportuji jen hodnoty na řádku 10 (RAW_Value). Teď bych potřeboval dotvořit pomocí for,expr atd. že když ID (první řádek) je 1 tak aby vypsal hodnoty do csv souboru, když 2 není tak aby vepsal do csv souboru středník ";" atd do hodnoty 255. Zkontrolovat tedy jaký je ID číslo a podle toho se zachovat. Takhle vypadá výpis smartu:
    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       -       0
    
    Kus 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í.

    Odpovědi

    andree avatar 9.7.2007 11:50 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    nieco ako

    ...

    for x in `/usr/sbin/smartctl -A /dev/hd${diskk} | grep -v ID# | sed "s%^[ ]*\([0-9]*\).*%\1%"`; do echo -n $x\; ; done

    ?
    9.7.2007 12:19 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Nepotřebuji grepovat daný ID smart hodnoty, potřebuji kontrolu jestli je na ID řádku 1 uvedena hodnota smart, když ano vložit hodnotu (RAW_Value) když není tak vložit ";" pro odsazení v csv souboru (";" dělá prázdnou buňku v csv).

    V příkladu budu mít jen: ID 1 a ID 202 - tak vložím do buňky číslo 1 hodnotu a do buňky číslo 202 vložím hodnotu - do buněk 2 až 201 vložím středník a do buněk 203 až 255 zase vložím středník. Tohoto potřebuji docílit, ale bohužel netuším jak.
    9.7.2007 12:05 mlz | skóre: 12 | blog: Obcas
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Snad jsem pochopil
    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
    9.7.2007 12:21 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Jo to by mělo být ono, děkuji mockrát za pomoc.
    9.7.2007 12:51 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Tak předčasná radost,

    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.
    9.7.2007 13:46 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Takhle?
    #!/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ě?
    9.7.2007 13:52 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Jo to je naprosto správně, jen je škoda že je to v Pythonu.

    Jelikož tohle je jen část scriptu a celkový script je komplet napsaný v BASHi - nemám na to abych to přepisoval do nového jazyku, už takhle mám problémy :) Ale přesně takhle by to mělo vypadat.
    9.7.2007 14:02 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    A mohl bys jen tak pro zajímavost napsat, co ten celkový skript dělá? Na přepsání něčeho z shellu do Pythonu nikdy není pozdě. Obzvlášť, je-li to program na více než pět řádků, což je asi tak hranice rozumné použitelnosti shellu.
    9.7.2007 14:39 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Celý script testuje HDD pomocí S.M.A.R.T a vypisuje v daném intervalu hodnoty. Script má 87 řádek a nevím jestli jsem ještě u konce. Zatím zapisuje teploty HDD do teploty.csv (čas,disk,teplota). Dále vypisuje celkový S.M.A.R.T do souboru hdd_číslo_čas.txt a pak RAW_Value hodnoty do raw.csv (cas,s/n: disku,hodnoty RAW) Tenhle raw.csv se pak bude přenášet do MySQL databáze pro další využití. Proto potřebuji mít daný hodnoty podle ID v dané buňce csv souboru (bohužel se musí zachovat i ten raw.csv, jinak bych to rovnou dával do MySQL). Jelikož každý disk má S.M.A.R.T trochu jinak (podle toho jak se výrobce disku zrovna probudí) tak musím zachovat ID i v buňkách csv souboru.

    Byl bych rád kdyby mi někdo pomohl s tím scriptem od MLZ je dostačující, jen mi bohužel nezapisuje ty nuly do buněk.
    9.7.2007 15:27 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Vím, že to nepoužiješ, ale pro inspiraci - mohlo by to vypadat třeba takhle.
    #!/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á?
    10.7.2007 09:12 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Při puštění scriptu mi vyhlásí chybu

    Traceback (most recent call last):
      File "test", line 2, in ?
        import subprocess, time
    ImportError: No module named subprocess
    
    Nevíš čím to může být ? Jak říkám Python neumím vůbec.
    10.7.2007 10:11 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    No, vypadá to, jako by chyběl modul subprocess, což by mohlo být způsobeno příliš starou verzí Pythonu. Jenže asi to bude něco jiného, protože ten předchozí příklad ti fungoval a přitom subprocess používá taky.
    Nezkoušíš to třeba na jiném počítači? Kdyby ses tím chtěl zabývat, napiš mi na jabber a semka potom napíšem nějaký závěr.
    10.7.2007 12:09 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Máš pravdu. Testoval jsem to na jiné mašině :) na který je stará verze Pythonu. Mám tu už trochu zmatek.
    10.7.2007 10:28 R
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Naco z toho vyrabas CSV, ked to mozes dat rovno do MySQL? man mysql
    10.7.2007 13:08 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Jak jsem psal - musí být zachován i csv soubor. Jinak bych to samo dával rovnou do MySQL. Po dokončení a redukci zdrojáku je celkový script na 50 řádků (i s mezerami)

    Kus finálního scriptu:

    # 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;
    done
    
    Děkuji všem za pomoc při vytváření tohoto kusu scriptu.
    11.7.2007 11:14 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    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
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    11.7.2007 22:06 makarenko
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    for raw in `cokoli`
    Je velmi velmi velmi špatný nápad!
    Smím vědět proč? Platí to pro tenhle konkrétní případ nebo všeobecně (čemuž se mi nechce věřit)? Kuji.
    11.7.2007 22:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Platí to naprosto obecně. Důvodem je, že se ten výstup parsuje bashem a mohou velmi lehce vzniknout podivné výsledky. Těžko najít nějaký příklad, kdy by taková konstrukce byla vhodná.
    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 *.txt
    Sekvence
    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
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    12.7.2007 01:02 makarenko
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Uhm, přiznávám, přehlédl jsem ty backquotes okolo cokoli.
    Beru tu poznámku o délce (viz „zhavarovat na velikost“), ale těm problémům s mezerami se přeci dá v uvedeném případě předejít:
    ( IFS=$'\n'; for i in $(ls *.txt); … )
    V žádném případě netvrdím, že je to lepší varianta než
     in *.txt 
    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.
    12.7.2007 07:33 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    ... 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
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    17.7.2007 10:27 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Dobrý den,

    Mohu Vás ještě požádat o pomoc? Rád bych, aby se ten script opakoval každých 5min a nechci to dávat do cronu, jak toho docílím pomocí BASHe ?
    17.7.2007 10:38 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Takový "dodatečný" dotaz bys měl pokládat v novém vlákně. Podobná věc se řešila třeba tady
    http://www.abclinuxu.cz/forum/show/185745
    Upozorňuji, že když použiješ úplně nejjednodušší řešení (while true....sleep), tak časy v logu budou vypadat dost hnusně.
    Kdybys to chtěl spouštět pravidelně a přesně každých pět minut, máš tuto možnost:
    http://www.abclinuxu.cz/forum/show/185745#14
    Josef Kufner avatar 17.7.2007 10:46 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    A máš nějaký závažný důvod, proč to nedávat do cronu?
    Hello world ! Segmentation fault (core dumped)
    9.7.2007 16:12 Tomáš | skóre: 29 | blog: Tomik
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Zalezi na tom, co ten skript dela. Mam i skripty na 100 radku, delaji hodne jednoduchych akci (treba kopirovani a konverze obrazku), takze Python by zlepseni neprinesl.
    9.7.2007 14:38 ams
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Upravena verze skriptu:
    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
    
    9.7.2007 14:53 D3d
    Rozbalit Rozbalit vše Re: BASH script - smartctl, csv, expr, awk
    Díky moc, to je přesně ono - to jsem potřeboval.

    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.