Jediné co mě teď napadá je řádek č. 29 v /usr/local/sbin/conkys_start.sh
Místo
awk /"$co"/'{sub(";","",$3); gsub("\"","",$3); print $3; konec=1}; END {exit !konec}'
zkus dát (odstranit dvojité závorky kolem proměnné $co):
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:
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:
awk -F '"' /"$co"/'{ print $2; konec=1 }; END{ exit !konec }'
Takže test by mohl vypadat takto:
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 :)"