mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
+17
-13
@@ -1,6 +1,8 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
use LibreNMS\Config;
|
||||
|
||||
$init_modules = array('');
|
||||
require __DIR__ . '/../includes/init.php';
|
||||
|
||||
@@ -13,9 +15,9 @@ if ($options['h'] && $options['o'] && $options['t'] && $options['v']) {
|
||||
|
||||
$device_id = ctype_digit($options['h']) ? $options['h'] : getidbyname($options['h']);
|
||||
$device = device_by_id_cache($device_id);
|
||||
$definition_file = $config['install_dir'] . "/includes/definitions/{$options['o']}.yaml";
|
||||
$discovery_file = $config['install_dir'] . "/includes/definitions/discovery/{$options['o']}.yaml";
|
||||
$test_file = $config['install_dir'] . "/tests/snmpsim/{$options['o']}.snmprec";
|
||||
$definition_file = Config::get('install_dir') . "/includes/definitions/{$options['o']}.yaml";
|
||||
$discovery_file = Config::get('install_dir') . "/includes/definitions/discovery/{$options['o']}.yaml";
|
||||
$test_file = Config::get('install_dir') . "/tests/snmpsim/{$options['o']}.snmprec";
|
||||
if (file_exists($definition_file)) {
|
||||
c_echo("The OS {$options['o']} appears to exist already, skipping to sensors support\n");
|
||||
} else {
|
||||
@@ -43,14 +45,14 @@ sysObjectID: $full_sysObjectID
|
||||
|
||||
if (filter_var($icon, FILTER_VALIDATE_URL)) {
|
||||
$icon_data = file_get_contents($icon);
|
||||
file_put_contents($config['temp_dir'] . "/{$options['o']}", $icon_data);
|
||||
$file_info = mime_content_type($config['temp_dir'] . "/{$options['o']}");
|
||||
file_put_contents(Config::get('temp_dir') . "/{$options['o']}", $icon_data);
|
||||
$file_info = mime_content_type(Config::get('temp_dir') . "/{$options['o']}");
|
||||
if ($file_info === 'image/png') {
|
||||
$ext = '.png';
|
||||
} elseif ($file_info === 'image/svg+xml') {
|
||||
$ext = '.svg';
|
||||
}
|
||||
rename($config['temp_dir'] . "/{$options['o']}", $config['install_dir'] . "/html/images/os/$vendor$ext");
|
||||
rename(Config::get('temp_dir') . "/{$options['o']}", Config::get('install_dir') . "/html/images/os/$vendor$ext");
|
||||
$icon = $vendor;
|
||||
}
|
||||
|
||||
@@ -85,29 +87,31 @@ discovery:
|
||||
|
||||
if (filter_var($mib_name, FILTER_VALIDATE_URL)) {
|
||||
$mib_data = file_get_contents($mib_name);
|
||||
file_put_contents($config['temp_dir'] . "/{$options['o']}.mib", $mib_data);
|
||||
$file_info = mime_content_type($config['temp_dir'] . "/{$options['o']}.mib");
|
||||
file_put_contents(Config::get('temp_dir') . "/{$options['o']}.mib", $mib_data);
|
||||
$file_info = mime_content_type(Config::get('temp_dir') . "/{$options['o']}.mib");
|
||||
if ($file_info !== 'text/plain') {
|
||||
c_echo("That mib file isn't a plain text file and is instead $file_info so we aren't using it");
|
||||
exit(1);
|
||||
}
|
||||
preg_match('/(.* DEFINITIONS ::)/', $mib_data, $matches);
|
||||
list($mib_name,) = explode(' ', $matches[0], 2);
|
||||
if (file_exists($config['install_dir'] . "/mibs/$vendor/") == false) {
|
||||
mkdir($config['install_dir'] . "/mibs/$vendor/");
|
||||
if (file_exists(Config::get('install_dir') . "/mibs/$vendor/") == false) {
|
||||
mkdir(Config::get('install_dir') . "/mibs/$vendor/");
|
||||
}
|
||||
rename($config['temp_dir'] . "/{$options['o']}.mib", $config['install_dir'] . "/mibs/$vendor/$mib_name");
|
||||
rename(Config::get('temp_dir') . "/{$options['o']}.mib", Config::get('install_dir') . "/mibs/$vendor/$mib_name");
|
||||
} elseif ($mib_name) {
|
||||
$tmp_mib = explode('/', $mib_name);
|
||||
$mib_name = array_pop($tmp_mib);
|
||||
}
|
||||
|
||||
$tables = `{$config['snmptranslate']} -M {$config['mib_dir']}:{$config['mib_dir']}/$vendor -m $mib_name -TB '.*Table$' -Os`;
|
||||
$translate_cmd = Config::get('snmptranslate') . ' -M ' . Config::get('mib_dir') . ':' . Config::get('mib_dir') . "/$vendor -m $mib_name -TB '.*Table$' -Os";
|
||||
$tables = shell_exec($translate_cmd);
|
||||
foreach (explode(PHP_EOL, $tables) as $table_name) {
|
||||
if ($table_name) {
|
||||
$continue = get_user_input("Do you want to add $table_name? (y/N)");
|
||||
if ($continue === 'y' || $continue === 'Y') {
|
||||
$tmp_info = `env MIBDIRS={$config['mib_dir']}:{$config['mib_dir']}/$vendor/ env MIBS="$mib_name" mib2c -q -c misc/mib2c.conf $table_name`;
|
||||
$mib2c_cmd = 'env MIBDIRS=' . Config::get('mib_dir') . ':' . Config::get('mib_dir') . "/$vendor/ env MIBS=\"$mib_name\" mib2c -q -c misc/mib2c.conf $table_name";
|
||||
$tmp_info = shell_exec($mib2c_cmd);
|
||||
$table_info = Symfony\Component\Yaml\Yaml::parse($tmp_info);
|
||||
$type = get_user_input('Enter the sensor type, i.e temperature, voltage, etc:');
|
||||
echo 'Table info:' . PHP_EOL;
|
||||
|
||||
Reference in New Issue
Block a user