check_nvme.h
1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef CHECK_NVME_H
#define CHECK_NVME_H
#include <iostream>
#include <sstream>
#include <map>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include "auxiliar.h"
#define OK 0
#define WARN 1
#define CRIT 2
#define UNKN 3
#define VERSION "1.0"
#define SMARTCTL_CMD_ATTRS "/usr/sbin/smartctl -A "
#define SMARTCTL_CMD_INFO "/usr/sbin/smartctl -i "
#define ROTATION_INFO_STR "Rotation Rate:"
#define SSD_DEV_STR "Solid State Device"
#define AVAILABLE_SPARE "Available Spare"
#define MEDIA_ERRORS "Media and Data Integrity Errors"
#define PERCENTAGE_USED "Percentage Used"
using namespace std;
struct NVMeAttr
{
string name;
int value;
int threshold_warn;
int threshold_crit;
bool optional;
bool lower_than;
}; typedef struct NVMeAttr NVMeAttr;
// Attribute definitions
NVMeAttr used = {
.name = PERCENTAGE_USED,
.value = -1,
.threshold_warn = 80,
.threshold_crit = 90,
.optional = false,
.lower_than = false,
};
NVMeAttr spare = {
.name = AVAILABLE_SPARE,
.value = -1,
.threshold_warn = 20,
.threshold_crit = 10,
.optional = false,
.lower_than = true,
};
NVMeAttr errors = {
.name = MEDIA_ERRORS,
.value = -1,
.threshold_warn = 0,
.threshold_crit = 0,
.optional = false,
.lower_than = false,
};
map<std::string,NVMeAttr> prepareAttrMap(int driveType);
int getNVMeAttrValue(string line);
std::string getNVMeAttrName(string line);
int run_smartctl_cmd(const string command, const char* disk, string* output);
int evalStatus(const char* disk, int driveType, string* status);
void printVersion();
void printHelp(bool longVersion);
void set_timeout(unsigned int sec);
#endif