Changeset 3ece2bd in nscp for modules/CheckWMI/CheckWMI.cpp
- Timestamp:
- 11/08/07 21:54:39 (6 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2, stable
- Children:
- e46ad71
- Parents:
- 22d2739
- File:
-
- 1 edited
-
modules/CheckWMI/CheckWMI.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
modules/CheckWMI/CheckWMI.cpp
r22d2739 r3ece2bd 143 143 144 144 NSCAPI::nagiosReturn CheckWMI::CheckSimpleWMIValue(const unsigned int argLen, char **char_args, std::string &message, std::string &perf) { 145 message = "Not yet implemented :("; 146 return NSCAPI::returnCRIT; 145 typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericBounds<long long, checkHolders::int64_handler> > > WMIConatiner; 146 std::list<std::string> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 147 if (stl_args.empty()) { 148 message = "ERROR: Missing argument exception."; 149 return NSCAPI::returnUNKNOWN; 150 } 151 std::list<WMIConatiner> list; 152 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 153 WMIConatiner tmpObject; 154 bool bPerfData = true; 155 unsigned int truncate = 0; 156 std::string query; 157 158 // Query=Select ... MaxWarn=5 MaxCrit=12 Check=Col1 --(later)-- Match==test Check=Col2 159 // MaxWarnNumeric:ID=>5 160 try { 161 MAP_OPTIONS_BEGIN(stl_args) 162 MAP_OPTIONS_SHOWALL(tmpObject) 163 MAP_OPTIONS_NUMERIC_ALL(tmpObject, "") 164 MAP_OPTIONS_STR("Alias", tmpObject.data) 165 MAP_OPTIONS_STR("Query", query) 166 MAP_OPTIONS_BOOL_FALSE(IGNORE_PERFDATA, bPerfData) 167 MAP_OPTIONS_STR_AND("Check", tmpObject.data, list.push_back(tmpObject)) 168 MAP_OPTIONS_STR("Alias", tmpObject.data) 169 MAP_OPTIONS_SECONDARY_BEGIN(":", p2) 170 MAP_OPTIONS_SECONDARY_STR_AND(p2,"Check", tmpObject.data, tmpObject.alias, list.push_back(tmpObject)) 171 MAP_OPTIONS_MISSING_EX(p2, message, "Unknown argument: ") 172 MAP_OPTIONS_SECONDARY_END() 173 MAP_OPTIONS_MISSING(message, "Unknown argument: ") 174 MAP_OPTIONS_END() 175 176 } catch (filters::parse_exception e) { 177 message = "WMIQuery failed: " + e.getMessage(); 178 return NSCAPI::returnCRIT; 179 } 180 181 WMIQuery::result_type rows; 182 try { 183 rows = wmiQuery.execute(query); 184 } catch (WMIException e) { 185 message = "WMIQuery failed: " + e.getMessage(); 186 return NSCAPI::returnCRIT; 187 } 188 int hit_count = 0; 189 190 for (std::list<WMIConatiner>::const_iterator it = list.begin(); it != list.end(); ++it) { 191 WMIConatiner itm = (*it); 192 itm.setDefault(tmpObject); 193 itm.perfData = bPerfData; 194 if (itm.data == "*") { 195 for (WMIQuery::result_type::const_iterator citRow = rows.begin(); citRow != rows.end(); ++citRow) { 196 for (WMIQuery::wmi_row::list_type::const_iterator citCol = (*citRow).results.begin(); citCol != (*citRow).results.end(); ++citCol) { 197 long long value = (*citCol).second.numeric; 198 itm.runCheck(value, returnCode, message, perf); 199 } 200 } 201 } else { 202 for (WMIQuery::result_type::const_iterator citRow = rows.begin(); citRow != rows.end(); ++citRow) { 203 bool found = false; 204 for (WMIQuery::wmi_row::list_type::const_iterator citCol = (*citRow).results.begin(); citCol != (*citRow).results.end(); ++citCol) { 205 if ((*citCol).first == itm.data) { 206 found = true; 207 long long value = (*citCol).second.numeric; 208 itm.runCheck(value, returnCode, message, perf); 209 } 210 } 211 if (!found) { 212 NSC_LOG_ERROR_STD("Column: " + itm.data + " was not found!"); 213 } 214 } 215 } 216 } 217 218 if ((truncate > 0) && (message.length() > (truncate-4))) 219 message = message.substr(0, truncate-4) + "..."; 220 if (message.empty()) 221 message = "OK: WMI Query returned no results."; 222 return returnCode; 147 223 } 148 224 … … 168 244 } 169 245 std::vector<int> widths; 170 for (WMIQuery::result_type:: iterator citRow = rows.begin(); citRow != rows.end(); ++citRow) {246 for (WMIQuery::result_type::const_iterator citRow = rows.begin(); citRow != rows.end(); ++citRow) { 171 247 const WMIQuery::wmi_row vals = *citRow; 172 248 if (citRow == rows.begin()) {
Note: See TracChangeset
for help on using the changeset viewer.








