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í
×

včera 20:22 | Nová verze

Před měsícem byla vydána Fedora 27 ve dvou edicích: Workstation pro desktopové a Atomic pro cloudové nasazení. Fedora Server byl "vzhledem k náročnosti přechodu na modularitu" vydán pouze v betaverzi. Finální verze byla naplánována na leden 2018. Plán byl zrušen. Fedora 27 Server byl vydán již dnes. Jedná se ale o "klasický" server. Modularita se odkládá.

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

Lukáš Růžička v článku Kuchařka naší Růži aneb vaříme rychlou polévku z Beameru na MojeFedora.cz ukazuje "jak si rychle vytvořit prezentaci v LaTeXu, aniž bychom se přitom pouštěli do jeho bezedných hlubin".

Ladislav Hagara | Komentářů: 12
včera 07:22 | Komunita

Od 26. do 29. října proběhla v Bochumi European Coreboot Conference 2017 (ECC'17). Na programu této konference vývojářů a uživatelů corebootu, tj. svobodné náhrady proprietárních BIOSů, byla řada zajímavých přednášek. Jejich videozáznamy jsou postupně uvolňovány na YouTube.

Ladislav Hagara | Komentářů: 0
11.12. 19:22 | Nová verze

Ondřej Filip, výkonný ředitel sdružení CZ.NIC, oznámil vydání verze 2.0.0 open source routovacího démona BIRD (Wikipedie). Přehled novinek v diskusním listu a v aktualizované dokumentaci.

Ladislav Hagara | Komentářů: 0
11.12. 09:22 | Pozvánky

V Praze dnes probíhá Konference e-infrastruktury CESNET. Na programu je řada zajímavých přednášek. Sledovat je lze i online na stránce konference.

Ladislav Hagara | Komentářů: 2
9.12. 20:11 | Nová verze

Byl vydán Debian 9.3, tj. třetí opravná verze Debianu 9 s kódovým názvem Stretch a Debian 8.10, tj. desátá opravná verze Debianu 8 s kódovým názvem Jessie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 9 a Debianu 8 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 2
9.12. 00:44 | Nová verze

Po 6 měsících vývoje od vydání verze 0.13.0 byla vydána verze 0.14.0 správce balíčků GNU Guix a na něm postavené systémové distribuce GuixSD (Guix System Distribution). Na vývoji se podílelo 88 vývojářů. Přibylo 1 211 nových balíčků. Jejich aktuální počet je 6 668. Aktualizována byla také dokumentace.

Ladislav Hagara | Komentářů: 4
8.12. 21:33 | Nová verze

Po půl roce vývoje od vydání verze 5.9 byla vydána nová stabilní verze 5.10 toolkitu Qt. Přehled novinek na wiki stránce. Současně byla vydána nová verze 4.5.0 integrovaného vývojového prostředí (IDE) Qt Creator nebo verze 1.10 nástroje pro překlad a sestavení programů ze zdrojových kódů Qbs.

Ladislav Hagara | Komentářů: 0
7.12. 11:11 | Komunita

Naprostá většina příjmů Mozilly pochází od výchozích webových vyhledávačů ve Firefoxu. Do konce listopadu 2014 měla Mozilla globální smlouvu se společností Google. Následně bylo místo jedné globální smlouvy uzavřeno několik smluv s konkrétními vyhledávači pro jednotlivé země. V USA byla podepsána pětiletá smlouva s vyhledávačem Yahoo. Dle příspěvku na blogu Mozilly podala společnost Yahoo na Mozillu žalobu ohledně porušení této

… více »
Ladislav Hagara | Komentářů: 0
7.12. 05:55 | Zajímavý článek

V Londýně probíhá konference věnovaná počítačové bezpečnosti Black Hat Europe 2017. Průběžně jsou zveřejňovány prezentace. Videozáznamy budou na YouTube zveřejněny o několik měsíců. Zveřejněna byla například prezentace (pdf) k přednášce "Jak se nabourat do vypnutého počítače, a nebo jak v Intel Management Engine spustit vlastní nepodepsaný kód". Dle oznámení na Twitteru, aktualizace vydaná společností Intel nevylučuje možnost útoku.

Ladislav Hagara | Komentářů: 5
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 963 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

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

    9.7.2007 10:07 D3d
    BASH script - smartctl, csv, expr, awk
    Přečteno: 2885×
    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.