mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Rewrite smokeping script to be an lnms command (#11585)
* Rewrite smokeping script to be an lnms command * Add a default number of probes for smokeping * Formatting fixes * Refactor to simplify a couple of methods * Fix a name collision when using more than 60 threads * Simplify * First pass at documentation A few climate fixes too. I'm a little dubious about the + LibreNMS fix - it could be included in /etc/smokeping/config if it is really needed, but it sounds like (looking at git blame) it's needed for if the script generates a broken configuration file. I'm thinking we should just not generate broken config. * Improve testability and add some tests * Load laravel to make translations available * Second pass at documentation * Fix brace * Extend the device factory to include the type Also adds a device group fake I created before I realised I didn't need it * Mimic gen_smokeping.php a little more closely * Update tests to properly verify old and new behaviour against each other * Replace gen_smokeping with a wrapper * Don't double whitespace Render does this automatically. Explicitly order by hostname too. * Make faker less likely to generate duplicates I tried adding a unique constraint here, but it didn't have the intended effect. Extending the hostname like this seems to work fine - I tried generating 10 million hosts and got no duplicates, compared to duplicates appearing with as few as 100 hosts without this change. A true fix would be to add an 'fqdn' fake upstream. * Make the tests more robust * Assorted bug fixes * Style corrections * Handle 'generic' devices * Fix an issue that came up during rebase Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
@@ -1,34 +1,37 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS
|
||||
*
|
||||
* Copyright (c) 2015 Søren Friis Rosiak <sorenrosiak@gmail.com>
|
||||
* 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 3 of the License, or (at your
|
||||
* option) any later version. Please see LICENSE.txt at the top level of
|
||||
* the source code distribution for details.
|
||||
*/
|
||||
/**
|
||||
* gen_smokeping.php
|
||||
*
|
||||
* Legacy wrapper for generating smokeping configurations
|
||||
*
|
||||
* 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 3 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link http://librenms.org
|
||||
* @copyright 2020 Adam Bishop
|
||||
* @author Adam Bishop <adam@omega.org.uk>
|
||||
*/
|
||||
|
||||
$init_modules = array();
|
||||
require realpath(__DIR__ . '/..') . '/includes/init.php';
|
||||
?>
|
||||
if (php_sapi_name() === 'cli') {
|
||||
$init_modules = [];
|
||||
require realpath(__DIR__ . '/..') . '/includes/init.php';
|
||||
|
||||
menu = Top
|
||||
title = Network Latency Grapher
|
||||
|
||||
<?php
|
||||
|
||||
foreach (dbFetchRows("SELECT `type` FROM `devices` WHERE `disabled` = 0 AND `type` != '' GROUP BY `type`") as $groups) {
|
||||
//Dot and space need to be replaced, since smokeping doesn't accept it at this level
|
||||
echo '+ ' . str_replace(['.', ' '], '_', $groups['type']) . PHP_EOL;
|
||||
echo 'menu = ' . $groups['type'] . PHP_EOL;
|
||||
echo 'title = ' . $groups['type'] . PHP_EOL;
|
||||
foreach (dbFetchRows("SELECT `hostname` FROM `devices` WHERE `type` = ? AND `disabled` = 0", array($groups['type'])) as $devices) {
|
||||
echo '++ ' . str_replace(['.', ' '], '_', $devices['hostname']) . PHP_EOL;
|
||||
echo 'menu = ' . $devices['hostname'] . PHP_EOL;
|
||||
echo 'title = ' . $devices['hostname'] . PHP_EOL;
|
||||
echo 'host = ' . $devices['hostname'] . PHP_EOL . PHP_EOL;
|
||||
}
|
||||
$return = \Artisan::call('smokeping:generate --targets --no-header --no-dns --single-process --compat');
|
||||
echo \Artisan::Output();
|
||||
|
||||
exit($return);
|
||||
}
|
||||
|
||||
exit();
|
||||
|
Reference in New Issue
Block a user