Portál AbcLinuxu, 16. května 2024 05:07


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
4.6.2023 13:03 X
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Odpovědět | Sbalit | Link | Blokovat | Admin
Klidne bych se nebal to spojit dohromady a udelat k tomu pres switch case napovedu a pak to soupnout bez pripony do /usr/local/bin a muzes to krasne volat z prikazove radky. Za shabang jeste patri popis co to dela.
cbrpnk avatar 4.6.2023 13:56 cbrpnk | skóre: 8 | blog: bl0gium
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Nejako takto ? :-)
#!/bin/bash

echo "hdt.sh v0.1 - bash script displays the temperature of hd/nvme disks"
echo " "
echo "--help show usage of script"
echo " "

get_disk_temperature() {
    local disk_path=$1
    local temperature=$(smartctl -a "$disk_path" 2>/dev/null | awk '/Temperature_Celsius/ { print $10 }')

    if [[ -n $temperature ]]; then
        echo "$temperature°C"
    else
        echo "Disk temperature is not available."
    fi
}

display_usage() {
    echo "Usage: $0 [disk_name]"
    echo "disk_name (optional): Name of the disk to display the temperature."
    echo "If not provided, temperatures for all eligible disks will be displayed."
    echo "Package smartmontools is mandatory."
}

main() {
    if [[ $1 == "--help" ]]; then
        display_usage
        exit 0
    fi

    if [[ -n $1 ]]; then
        local disk_path="/dev/$1"
        if [[ -e $disk_path ]]; then
            get_disk_temperature "$disk_path"
        else
            echo "Error: Disk $1 does not exist."
            exit 1
        fi
    else
        local disks_output=$(lsblk -d -n -o NAME)
        for disk in ${disks_output[@]}; do
            if [[ $disk == sd* || $disk == nvme* ]]; then
                local disk_path="/dev/$disk"
                echo "Disk temperature for $disk: $(get_disk_temperature "$disk_path")"
            fi
        done
    fi
}

main "$@"

4.6.2023 14:13 jejda | skóre: 24 | blog: jejda
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkné, no mohls tam připsat nějaké upozornění že to funguje jenom pod rootem. Chvilku jsem s tím zápasil proč mi to vyhazuje error tempertature not available. Nějaký způsob jak se podívat na teploty disku bez práv roota existuje?
cbrpnk avatar 4.6.2023 14:18 cbrpnk | skóre: 8 | blog: bl0gium
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Ano, len root alebo sudo eventualne... ale to tusim takto fungoval aj originál hddtemp...
4.6.2023 17:54 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
+ ešte možnosť: setuid bit
debian.plus@protonmail.com
4.6.2023 17:13 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12

Bez roota to nepôjde. Spustil som strace s rootom a bez. Podľa toho čo píše strace tak to spadne na prístupových právachk danému zariadeniu sdX.

  • S rootom openat(AT_FDCWD, "/dev/sda", O_RDONLY|O_NONBLOCK) = 3 ioctl(3, SG_IO, {interface_id='S', dxfer_direction=SG_DXFER_FROM_DEV, cmd_len=6, cmdp="\x12\x00\x00\x00\x24\x00", mx_sb_len=32, iovec_count=0, dxfer_len=36, tim eout=60000, flags=0, dxferp="\x00\x00\x05\x02\x5b\x00\x00\x02\x41\x54\x41\x20\x20\x20\x20\x20\x57\x44\x43\x20\x57\x44\x35\x30\x30\x33\x41\x5a\x45\x58\x2d\x30"..., status=0, masked_status=0, msg_status=0, sb_len_wr=0, sbp="", host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0 ioctl(3, SG_IO, {interface_id='S', dxfer_direction=SG_DXFER_FROM_DEV, cmd_len=16, cmdp="\x85\x08\x0e\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xec\x00", mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=60000, flags=0, dxferp="\x7a\x42\xff\x3f\x37\xc8\x10\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x57\x20\x2d\x44\x43\x57\x36\x43"..., status=0, masked_status=0, msg_status=0, sb_len_wr=0, sbp="", host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0
  • Bez rootaopenat(AT_FDCWD, "/dev/sda", O_RDONLY|O_NONBLOCK) = -1 EACCES (Permission denied) write(1, "Smartctl open device: /dev/sda f"..., 57) = 57 exit_group(2) = ? +++ exited with 2 +++
Z tohto vyplýva, že na prístup k zariadeniu potrebuješ pridelenú capabilitie CAP_FOWNER,CAP_RAWIO. Lenže tieto povolenia sú všeobecne a zatial neviem o tom, že existuje ako vyriešiť riadené prístupu. Na bezpečný prístup k daným funkciam by musela byť aplikácia prepísaná. Čo asi nebude a zrejme bude nutné doprogramovať nejaký výstup cez filesystém sysfs.

Root v linuxe : "Root povedal, linux vykona."
4.6.2023 23:22 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Mám za to, že v sysfs žádné informace ohledně teploty disků nejsou
Quando omni flunkus moritati
5.6.2023 14:08 plostenka | blog: plstnk
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Ale mohly by byt, vlastne by tam mohl byt cely SMART, protoze proc ne.
AraxoN avatar 5.6.2023 11:09 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Neskúšal som, ale údajne by sa teplota disku mala dať čítať aj cez SNMP (ak je nainštalovaný a správne nastavený).
Max avatar 5.6.2023 11:26 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Docela úchylný, ne? :)
Zdar Max
Měl jsem sen ... :(
AraxoN avatar 5.6.2023 11:50 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Náhrada za HDDtemp v Debian 12
Na prvotné nastavenie áno.

Ale potom nepotrebuješ roota na čítanie teploty :)
xkucf03 avatar 6.6.2023 19:12 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše SNMP, JMX, D-Bus
V čem je to úchylnější oproti takovému D-Bus, kde se publikují např. informace o stavu baterky a spousta dalších věcí?

D-Bus akorát funguje přes doménový soket, jinak to dělá to samé. Podobně JMX. Znovu se vynalézá kolo, jak už je v IT zvykem.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
24.6.2023 13:40 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: SNMP, JMX, D-Bus

Napríklad teploty, napätia a frekvenicie sú v /sys/class/hwmon/

Root v linuxe : "Root povedal, linux vykona."

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.