Estou pensando em criar um novo módulo para monitoramento de disco SMART. Tanto quanto eu posso dizer, existem três opções para implementar isso:
Eu prefiro usar libatasmart , pois isso adicionaria suporte nativo com apenas uma única dependência adicional.
Alguém sabe se é possível usar libatasmart sem privilégios de root?
libatasmart
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <atasmart.h>
int main(void) {
uint64_t mkelvin = 0;
const char *device = "/dev/sda";
SkDisk *d = NULL;
if (-1 == (sk_disk_open(device, &d))) {
fprintf(stderr, "Failed to open disk %s: %s\n", device, strerror(errno));
return 1;
}
if (-1 == (sk_disk_smart_read_data(d))) {
fprintf(stderr, "Failed to read SMART data: %s\n", strerror(errno));
goto finish;
}
if (-1 == (sk_disk_smart_get_temperature(d, &mkelvin))) {
fprintf(stderr, "Failed to get temperature: %s\n", strerror(errno));
goto finish;
}
printf("%llu\n", (unsigned long long)mkelvin);
finish:
if (NULL != d) {
sk_disk_free(d);
}
return 0;
}
smartmontools estão disponíveis em várias plataformas e os sabores *BSD também se beneficiariam disso.
Aqueles como eu que não usam o init systemd serão forçados a instalar dependências adicionais.
Alguém sabe se é possível usar libatasmart sem privilégios de root?
visudo
computer_name ALL=NOPASSWD:/usr/bin/program_name
@fonic OMFG. Mal posso esperar para ver isso implementado. :gritar:
Comentários muito úteis
@fonic OMFG. Mal posso esperar para ver isso implementado. :gritar: