Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Conky [Vyřešeno]  (Přečteno 27713 krát)

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Re:Conky [Vyřešeno]
« Odpověď #275 kdy: 28 Srpna 2022, 06:42:34 »
Ten json vypadá taky normálně:
Kód: [Vybrat]
juwa@p-5738:~$ sudo smartctl -i --json=g /dev/sdc
[sudo] heslo pro juwa:         
json = {};
json.json_format_version = [];
json.json_format_version[0] = 1;
json.json_format_version[1] = 0;
json.smartctl = {};
json.smartctl.version = [];
json.smartctl.version[0] = 7;
json.smartctl.version[1] = 3;
json.smartctl.svn_revision = "5338";
json.smartctl.platform_info = "x86_64-linux-5.4.209-0504209-lowlatency";
json.smartctl.build_info = "(local build)";
json.smartctl.argv = [];
json.smartctl.argv[0] = "smartctl";
json.smartctl.argv[1] = "-i";
json.smartctl.argv[2] = "--json=g";
json.smartctl.argv[3] = "/dev/sdc";
json.smartctl.drive_database_version = {};
json.smartctl.drive_database_version.string = "7.3/5319";
json.smartctl.exit_status = 0;
json.local_time = {};
json.local_time.time_t = 1661661133;
json.local_time.asctime = "Sun Aug 28 06:32:13 2022 CEST";
json.device = {};
json.device.name = "/dev/sdc";
json.device.info_name = "/dev/sdc [SAT]";
json.device.type = "sat";
json.device.protocol = "ATA";
json.model_family = "Western Digital Caviar Green (AF)";
json.model_name = "WDC WD20EARS-00MVWB0";
json.serial_number = "WD-WCAZA1959638";
json.wwn = {};
json.wwn.naa = 5;
json.wwn.oui = 5358;
json.wwn.id = 11539816450;
json.firmware_version = "51.0AB51";
json.user_capacity = {};
json.user_capacity.blocks = 3907029168;
json.user_capacity.bytes = 2000398934016;
json.logical_block_size = 512;
json.physical_block_size = 512;
json.trim = {};
json.trim.supported = false;
json.in_smartctl_database = true;
json.ata_version = {};
json.ata_version.string = "ATA8-ACS (minor revision not indicated)";
json.ata_version.major_value = 510;
json.ata_version.minor_value = 0;
json.sata_version = {};
json.sata_version.string = "SATA 2.6";
json.sata_version.value = 30;
json.interface_speed = {};
json.interface_speed.max = {};
json.interface_speed.max.sata_value = 6;
json.interface_speed.max.string = "3.0 Gb/s";
json.interface_speed.max.units_per_second = 30;
json.interface_speed.max.bits_per_unit = 100000000;
json.smart_support = {};
json.smart_support.available = true;
json.smart_support.enabled = true;

A disk se do databáze (na rozdíl od ostatních) nepřidá:
Kód: [Vybrat]
juwa@p-5738:~$ cat /etc/conkys/conkys_data.conf
# Privat database of disks connected to this PC
# Lines begin with char # (hash) are ignored
# Delimiter is char | (pipe)
# Form line must be:
# -----------------------------------------------------------------------
# Ignoring HD | TYPE HD | serial number | HD timeout | Loop delay | treshold | arguments
# -----------------------------------------------------------------------
# Where
# *Ignorig HD-> if value 1 HD is ignored
# *TYPE HD -> TYPE from smartctl
# *serial number -> from smartctl
# *HD timeout -> After how many seconds HD has to switch to standby mode
# *Loop delay -> how often has to script run (in sec)
# *threshold -> how many reads are needed by smartctl to read temperature
# *arguments -> we make HD better thanks to smartctl arguments

|sat|80HM91VFS|600|10|0|
|usbjmicron|WD-WCC4M5KTEANX|600|10|0|
|sat|WD-WXH1A71N8997|600|10|37|
|usbsunplus|100920PBN203DSD0PP7M|600|10|1|
|usbjmicron|WD-WXC1A70U6538|600|10|10|

Pozoroval jsem složku /dev/shm/conkys - po připojení toho disku se v ní na okamžik složka sdc  objeví a hned zase zmizí....
Ještě mám konfigurák (z doby před víceuživatelskou verzí)  ~/.conky/my_conf.conf  ve kterém jsou načteny i oba interní disky (a bylo třeba je ignorovat). Což nyní není.
Takže mě napadlo, zda náhodou není ten problémový disk pokládán z nějaké příčiny za interní...
Kód: [Vybrat]
juwa@p-5738:~$ cat ~/.conky/my_conf.conf
# Privátní databáze disků připojovaných k systému.
# Řádek začínající znakem hash je považován za komentář a bude ignorován.
# Jako delimiter je použit znak roury |
# Každý řádek musí být ve tvaru:
# -----------------------------------------------------------------------
# Ignorace disku | TYPE disku | sériové číslo | doba uspání | rychlost kontroly | treshold | argumenty
# -----------------------------------------------------------------------

#0|sat|TOSHIBAMQ01ABD0|600|10|12|-o off -s apm,128

|sat|80HM91VFS|600|10|0|
1|sat|Y82WP4Z2T|3600|10|17| -s apm,255
1|sat|WDE0QKX8|3600|10|0| -s standby,253
|usbjmicron|WD-WCC4M5KTEANX|600|10|0|
|usbsunplus|100920PBN203DSD0PP7M|600|20|0|

« Poslední změna: 28 Srpna 2022, 08:00:58 od juwa2 »

ramael

  • Stálý člen
  • **
  • Příspěvků: 622
Re:Conky [Vyřešeno]
« Odpověď #276 kdy: 28 Srpna 2022, 09:34:46 »
Jediné co mě teď napadá je řádek č. 29 v /usr/local/sbin/conkys_start.sh
Místo
Kód: [Vybrat]
awk /"$co"/'{sub(";","",$3); gsub("\"","",$3); print $3; konec=1}; END {exit !konec}'
zkus dát (odstranit dvojité závorky kolem proměnné $co):
Kód: [Vybrat]
awk /$co/'{sub(";","",$3); gsub("\"","",$3); print $3; konec=1}; END {exit !konec}'
Skript totiž může úspěšně "načíst sériové číslo". Ale výsledek musí projít like parsováním. V tomto případě oříznutí znaků " a ;
Pokud se tam něco zvrtne, končí to exitem 1 a ten vyvolá hlášku o nemožnosti čtení S.M.A.R.T.u a automaticky se vše ukončí. Nastoupí Viktor čistič a vymaže příslušný dočasný sdresář v /dev/shm/conkys/jsem_bad_disk který se vytvořil ihned po připojení disku. To aby se předcházelo kolizím či nepředvídatelnému chování. Proto hned příslušná složka zmizela.
Možná by pomohlo připojit nějaký pravý json parser. Ale už je to další utilita navíc.
Budu čekat na výsledek. Tak i tak jsem to chtěl trochu přepsat. Jen se budu muset mentálně přepnout do bash uvažování a to mne trvá.

EDIT:
Možná by nebylo špatné se na to kouknout přímo z pohledu zmiňovaného kódu přez který to neprojde:
Kód: [Vybrat]
sudo -i
co="json.serial_number"
awk /"$co"/'{sub(";","",$3); gsub("\"","",$3); print $3; konec=1}; END {exit !konec}' <<< $(smartctl -i --json=g /dev/sdc) || echo "$co je velmi bad request :)"
Jaký to má výsledek? Výsledek by neměl obsahovat uvozovky ani středník.
Nedaří se mi v tom vyvolat chybu, tak to nemohu nijak porovnat. Jediné kdy to chybové hlášení vyplivlo, byla nedostatečná oprávnění se smartctl (zkusil jsem to spustit jako běžný uživatel). Ale v tomto případě by Ti nefungovali teploty ostatních disků...

EDIT II:
Jednodušeji a s menší režií jde ten řádek napsat takto:
Kód: [Vybrat]
awk -F '"' /"$co"/'{ print $2; konec=1 }; END{ exit !konec }'
Takže test by mohl vypadat takto:
Kód: [Vybrat]
sudo -i
co="json.serial_number"
awk -F '"' /"$co"/'{ print $2; konec=1}; END {exit !konec}' <<< $(smartctl -i --json=g /dev/sdc) || echo "$co je velmi bad request :)"
« Poslední změna: 28 Srpna 2022, 20:43:16 od ramael »
Lenovo: ThinkPad X380 Yoga
MeWe  Joutůůůůb

ramael

  • Stálý člen
  • **
  • Příspěvků: 622
Re:Conky [Vyřešeno]
« Odpověď #277 kdy: 24 Prosince 2022, 16:12:38 »
@juwa2 jak to vypadá s tím problémem? Momentálně jsem to začal přepisovat. Našel jsem pár chyb (kontrola a následná nemožnost instalalce v závislosti na verzi smartmontools) a zbytečností co se týče instalace a systemd. Ptám se protože jsem narazil na nestandardní chování dvou disků. První ještě s ATA rozhraním, který začal hlásit blbosti. Chvíli OK a pak zase divné výsledky. Až přestal úplně komunikovat. Bylo na něm ještě ubuntu 14.04. Nejspíš odešel řadič. Druhý disk mega překvapení, kdy je to SATA a přesto se hlásí jako ATA. Ač jsem mu zapnul S.M.A.R.T, je schopen jen nahlásit co je zač a kapacitu. Jinak nic. Ovšem, funguje skvěle (zápis, čtení).
Lenovo: ThinkPad X380 Yoga
MeWe  Joutůůůůb

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Re:Conky [Vyřešeno]
« Odpověď #278 kdy: 24 Prosince 2022, 17:01:03 »
Kód: [Vybrat]
root@p-5738:~# co="json.serial_number"
root@p-5738:~# awk -F '"' /"$co"/'{ print $2; konec=1}; END {exit !konec}' <<< $(smartctl -i --json=g /dev/sdc) || echo "$co je velmi bad request :)"
WD-WCAZA1959638

Takže ten test vrátí serial number toho disku.
Uvozovky na ř. 29 jsem odstranil, změna žádná..... :-[
« Poslední změna: 24 Prosince 2022, 23:00:59 od juwa2 »

 

Provoz zaštiťuje spolek OpenAlt.