Conky: Adicionar novo módulo para monitoramento SMART

Criado em 29 mai. 2017  ·  3Comentários  ·  Fonte: brndnmtthws/conky

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:

  • chamando smartctl (smartmontools)
  • interface do libatasmart
  • interfaceando udisks usando comunicações DBUS

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?

enhancement

Comentários muito úteis

@fonic OMFG. Mal posso esperar para ver isso implementado. :gritar:

Todos 3 comentários

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:

Esta página foi útil?
0 / 5 - 0 avaliações