able to find all devices in /dev/

This commit is contained in:
Hendrik Schutter 2018-11-08 22:26:42 +01:00
parent bfc7b8ca5d
commit 20cfc44b51
8 changed files with 275 additions and 1 deletions

View File

@ -8,7 +8,7 @@
## planned Features:
* search for new attached Hard Drives via USB
* display Hard Drive Manufacturer, Model, Spin Speed and Capacity
* display Hard Drive Manufacturer, Model, Rotation Rate and Capacity
* Check S.M.A.R.T. values and make an 'passed' or 'not passed' decision
* If passed, wipe the data securely

0
src/drives.cpp Normal file
View File

141
src/mainTest.cpp Normal file
View File

@ -0,0 +1,141 @@
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
struct deviceData{
string model;
string manufacturer;
short rotationRate; //in rpm
short capacity; //in Gigabytes
};
string removeLastNewLine(string s);
deviceData getDeviceData(string path);
/*
*
* clear && g++ -Wall -o test mainTest.cpp
*
*/
int main(void)
{
cout << "Hello World!\n";
char * cLine = NULL;
string path;
size_t len = 0;
int loop = 0;
int devicesSize = 0;
string devices[5];
FILE* outputfileHwinfo = popen("hwinfo --short --disk", "r");
if (outputfileHwinfo == NULL) {
exit(EXIT_FAILURE);
}
while ((getline(&cLine, &len, outputfileHwinfo)) != -1) {
if(loop > 0) {
string line = string(cLine);
path = line.substr (2,8);
devices[devicesSize] = path;
devicesSize++;
}
loop++;
}
fclose(outputfileHwinfo);
cout << "Model: " << getDeviceData(devices[0]) << endl;
return 0;
}
deviceData getDeviceData(string path) {
size_t len = 0; //lenght of found line
char * cLine = NULL; //found line
string comand = ("smartctl -a " + path);
const char *cComand = comand.c_str();
FILE* outputfileSmart = popen(cComand, "r");
while ((getline(&cLine, &len, outputfileSmart)) != -1) {
string line = string(cLine);
string search ("Device Model:");
size_t found = line.find(search);
if (found!=string::npos) {
int lenght = line.length(); //lenght of line
string str3 (":");
found = line.find(str3);
//cout << "Found1: " << found << endl;
for(int i = (found+1); i < lenght; i++) {
if(line[i] != ' ') {
// cout << i << endl;
found = i;
break;
}
}
string model = line.substr (found, lenght);
model = removeLastNewLine(model);
// cout << model << endl;
return model;
}
}
fclose(outputfileSmart);
return "error";
}
string removeLastNewLine(string s) {
if (!s.empty() && s[s.length()-1] == '\n') {
s.erase(s.length()-1);
}
return s;
}

133
src/mainTest.cpp.orig Normal file
View File

@ -0,0 +1,133 @@
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
string removeLastNewLine(string s);
string getModel(string path);
/*
*
* g++ -Wall -o cctv_radar cctv_radar.cpp mcp3008Spi.cpp logger.cpp libftpclient.a -lcurl -lwiringPi -pthread
*
*/
int main(void)
{
cout << "Hello World!\n";
char * cLine = NULL;
string path;
size_t len = 0;
int loop = 0;
int devicesSize = 0;
string devices[5];
FILE* outputfileHwinfo = popen("hwinfo --short --disk", "r");
if (outputfileHwinfo == NULL) {
exit(EXIT_FAILURE);
}
while ((getline(&cLine, &len, outputfileHwinfo)) != -1) {
if(loop > 0) {
string line = string(cLine);
path = line.substr (2,8);
devices[devicesSize] = path;
devicesSize++;
}
loop++;
}
fclose(outputfileHwinfo);
cout << "Model: " << getModel(devices[0]) << endl;
return 0;
}
string getModel(string path){
size_t len = 0;
char * cLine = NULL;
string comand = ("smartctl -a " + path);
const char *cComand = comand.c_str();
FILE* outputfileSmart = popen(cComand, "r");
while ((getline(&cLine, &len, outputfileSmart)) != -1) {
string line = string(cLine);
//cout << line << endl;
string str2 ("Device Model:");
size_t found = line.find(str2);
if (found!=string::npos) {
// cout << "Device Model: at: " << found << '\n';
// cout << line << endl;
int size = line.length();
string str3 (":");
found = line.find(str3);
//cout << "Found1: " << found << endl;
for(int i = (found+1); i < size; i++) {
if(line[i] != ' ') {
// cout << i << endl;
found = i;
break;
}
}
string model = line.substr (found, size);
model = removeLastNewLine(model);
// cout << model << endl;
return model;
}
}
return "error";
}
string removeLastNewLine(string s) {
if (!s.empty() && s[s.length()-1] == '\n') {
s.erase(s.length()-1);
}
return s;
}

View File

0
src/smart.cpp Normal file
View File

BIN
src/test Executable file

Binary file not shown.

0
src/wipe.cpp Normal file
View File