Repository navigation
Expand file tree
/
Copy pathassociate_os_type.php
More file actions
162 lines (141 loc) · 4.92 KB
/
Copy pathassociate_os_type.php
File metadata and controls
162 lines (141 loc) · 4.92 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/usr/bin/php -q
<?php
/*
+-------------------------------------------------------------------------+
| Copyright (C) 2004-2026 The Cacti Group |
| |
| This program is free software; you can redistribute it and/or |
| modify it under the terms of the GNU General Public License |
| as published by the Free Software Foundation; either version 2 |
| of the License, or (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
+-------------------------------------------------------------------------+
| Cacti: The Complete RRDtool-based Graphing Solution |
+-------------------------------------------------------------------------+
| This code is designed, written, and maintained by the Cacti Group. See |
| about.php and/or the AUTHORS file for specific developer information. |
+-------------------------------------------------------------------------+
| http://www.cacti.net/ |
+-------------------------------------------------------------------------+
*/
chdir(__DIR__);
chdir('../..');
include('./include/cli_check.php');
// process calling arguments
$parms = $_SERVER['argv'];
array_shift($parms);
global $debug, $start, $seed, $forcerun;
$debug = false;
if (cacti_sizeof($parms)) {
foreach ($parms as $parameter) {
if (strpos($parameter, '=')) {
[$arg, $value] = explode('=', $parameter);
} else {
$arg = $parameter;
$value = '';
}
switch ($arg) {
case '-d':
case '--debug':
$debug = true;
break;
case '--version':
case '-V':
case '-v':
display_version();
exit;
case '--help':
case '-H':
case '-h':
display_help();
exit;
default:
print 'ERROR: Invalid Parameter ' . $parameter . "\n\n";
display_help();
exit;
}
}
}
process_hosts();
exit(0);
/**
* Prints a debug message to stdout when CLI debug output is enabled.
* Currently unused/dead code: not called from anywhere else in this
* file.
*
* @param string $message The debug message to print.
*
* @return void
*
* @global bool $debug Whether debug output ('--debug' CLI flag) is
* enabled; when false, this function is a no-op.
*/
function debug(string $message): void {
global $debug;
if ($debug) {
print 'DEBUG: ' . trim($message) . "\n";
}
}
/**
* Re-associates every discovered Host MIB device with its matching
* configured OS type, based on comparing each device's sysDescr/
* sysObjectID against every plugin_hmib_hrSystemTypes definition's match
* patterns. Called from this script's main flow (typically as a
* scheduled/manual CLI maintenance task run after OS type definitions
* are added or changed).
*
* @return void
*
* @global float $start Reserved/declared for parity with other CLI
* scripts in this plugin; not used directly here.
* @global mixed $seed Reserved/declared for parity with other CLI
* scripts in this plugin; not used directly here.
*/
function process_hosts(): void {
global $start, $seed;
print "NOTE: Processing OS Types Begins\n";
$types = db_fetch_assoc('SELECT * FROM plugin_hmib_hrSystemTypes');
if (cacti_sizeof($types)) {
foreach ($types as $t) {
db_execute_prepared('UPDATE plugin_hmib_hrSystem AS hrs SET host_type = ?
WHERE hrs.sysDescr LIKE ?
AND hrs.sysObjectID LIKE ?',
[$t['id'], '%' . $t['sysDescrMatch'] . '%', $t['sysObjectID'] . '%']);
}
}
print "NOTE: Processing OS Types Ended\n";
}
/**
* Prints this script's name/plugin version/copyright. Called from the
* CLI argument parser for the '--version' flag, and from display_help()
* to prefix the usage text.
*
* @return void
*
* @global array $config Cacti global configuration array; used to
* locate and load setup.php for the version
* lookup.
*/
function display_version(): void {
global $config;
if (!function_exists('plugin_hmib_version')) {
include_once($config['base_path'] . '/plugins/hmib/setup.php');
}
$version = plugin_hmib_version();
print 'Host MIB Associate OS Type, Version ' . $version['version'] . ', ' . COPYRIGHT_YEARS . "\n";
}
/**
* Prints this script's version banner followed by its (minimal)
* command-line usage summary. Called from the CLI argument parser for
* the '--help' flag, and whenever an invalid argument is supplied.
*
* @return void
*/
function display_help(): void {
display_version();
print "\nusage: call without any parameter\n";
}