Command Line Scripts ==================== Cacti supports a number of command line scripts. You will find them in the `./cli` directory. As of current, following scripts are supported: add_device.php add_data_query.php add_graph_template.php add_graphs.php add_perms.php add_tree.php copy_user.php poller_graphs_reapply_names.php poller_output_empty.php poller_reindex_hosts.php rebuild_poller_cache.php > **Caution** > > In the following examples, several numbers are shown as output from various scripts. They will vary between different installations. So don't bother, if your numbers will vary Rebuild Poller Cache -------------------- The poller cache holds all commands that cacti will issue during the polling process in an internal format. It is possible, to review the currenty contents of the poller cache by visiting `System Utilities`, `View Poller Cache`. It is possible to apply filters to this view; it will show up like Localhost - Hard Drive Space Script Server: /var/www/html/cacti/scripts/ss_host_disk.php ss_host_disk 127.0.0.1 1 1:161:500:somesecret:::::: get total 6 RRD: /var/www/html/cacti/rra/localhost_hdd_total_61.rrd Localhost - Load Average Script: /usr/bin/perl /var/www/html/cacti/scripts/loadavg_multi.pl RRD: /var/www/html/cacti/rra/localhost_load_1min_5.rrd Localhost - Logged in Users Script: /usr/bin/perl /var/www/html/cacti/scripts/unix_users.pl RRD: /var/www/html/cacti/rra/localhost_users_6.rrd Localhost - Memory - Free Script: /usr/bin/perl /var/www/html/cacti/scripts/linux_memory.pl MemFree: RRD: /var/www/html/cacti/rra/localhost_mem_buffers_3.rrd Localhost - Memory - Free Swap Script: /usr/bin/perl /var/www/html/cacti/scripts/linux_memory.pl SwapFree: RRD: /var/www/html/cacti/rra/localhost_mem_swap_4.rrd Localhost - mtaReceivedMessages SNMP Version: 1, Community: somesecret, OID: .1.3.6.1.2.1.28.1.1.1.1 RRD: /var/www/html/cacti/rra/localhost_mtareceivedmessages_47.rrd Localhost - mtaReceivedVolume SNMP Version: 1, Community: somesecret, OID: .1.3.6.1.2.1.28.1.1.4.1 RRD: /var/www/html/cacti/rra/localhost_mtareceivedvolume_49.rrd There are several circumstances, that may result in the poller cache being out of sync. An example would be a change of the name of a script used in a `Data Input Method`. This change is *not* automatically propagated to the poller cache. It is required, to run php -q rebuild poller_cache.php manually. Calling the script with the parameter `--help` yields shell>php -q rebuild_poller_cache.php --help Cacti Rebuild Poller Cache Script 1.0, Copyright 2004-2018 - The Cacti Group usage: rebuild_poller_cache.php [-d] [-h] [--help] [-v] [--version] -d - Display verbose output during execution -v --version - Display this help message -h --help - Display this help message Debug mode lists the data sources items that are worked upon. shell>php -q rebuild_poller_cache.php -d WARNING: Do not interrupt this script. Rebuilding the Poller Cache can take quite some time DEBUG: There are '38' data source elements to update. DEBUG: Data Source Item '1' of '38' updated DEBUG: Data Source Item '2' of '38' updated DEBUG: Data Source Item '3' of '38' updated DEBUG: Data Source Item '4' of '38' updated .... Without any parameter, some dots are shown as progress indicators. shell>php -q rebuild_poller_cache.php WARNING: Do not interrupt this script. Rebuilding the Poller Cache can take quite some time ...................................... shell> > **Caution** > > Rebuilding the poller cache interferes with the poller operation. Make sure that the poller is not running and will not start during a rebuild operation Re-Index Hosts -------------- Re-Indexing is required only for SNMP/Script Data Queries. Remember, that whan applying a Data Query to a Host, a `Re-Index Method` has to be chosen. This reindex method governs the automatic re-indexing based on specific events. || If you feel the need for manual re-indexing, you may run it from cli. Calling the script with the parameter `--help` yields shell>php -q poller_reindex_hosts.php --help Cacti Reindex Host Script 1.2, Copyright 2004-2018 - The Cacti Group usage: poller_reindex_hosts.php --id=[host_id|All] [--qid=[ID|All]] [--host-descr=[description]] [-d] [-h] [--help] [-v] [--version] --id=host_id - The host_id to have data queries reindexed or 'All' to reindex all hosts --qid=query_id - Only index on a specific data query id; defaults to 'All' --host-descr=description - The host description to filter by (SQL filters acknowledged) --debug - Display verbose output during execution -v --version - Display this help message -h --help - Display this help message Running it in debug mode for the host with `id=2` may yield shell>php -q poller_reindex_hosts.php -id=2 -d WARNING: Do not interrupt this script. Reindexing can take quite some time DEBUG: There are '1' data queries to run DEBUG: Data query number '1' host: '2' SNMP Query Id: '1' starting DEBUG: Data query number '1' host: '2' SNMP Query Id: '1' ending A silent run for all devices is issued by shell>php -q poller_reindex_hosts.php -id=All WARNING: Do not interrupt this script. Reindexing can take quite some time .....shell> You may run this script against a specific data query id using `--qid=[data query id]` like shell>php -q poller_reindex_hosts.php --id=All --qid=1 -d WARNING: Do not interrupt this script. Reindexing can take quite some time DEBUG: There are '3' data queries to run DEBUG: Data query number '1' host: '1' SNMP Query Id: '1' starting DEBUG: Data query number '1' host: '1' SNMP Query Id: '1' ending DEBUG: Data query number '2' host: '2' SNMP Query Id: '1' starting DEBUG: Data query number '2' host: '2' SNMP Query Id: '1' ending DEBUG: Data query number '3' host: '15' SNMP Query Id: '1' starting DEBUG: Data query number '3' host: '15' SNMP Query Id: '1' ending It is possible, to select a host based on its host description using `--host-descr=[host description]`. It is allowed to apply an SQL filter expression for the description like `--qid=some%descr`. Use this parameter in conjunction with either `--id=[host id]` or `--qid=[data query id]` or both: shell>php -q poller_reindex_hosts.php --id=All --qid=1 --host-descr=ga%f -d WARNING: Do not interrupt this script. Reindexing can take quite some time DEBUG: There are '1' data queries to run DEBUG: Data query number '1' host: '2' SNMP Query Id: '1' starting DEBUG: Data query number '1' host: '2' SNMP Query Id: '1' ending > **Caution** > > Re-Indexing interferes with the poller operation. Make sure that the poller is not running and will not start during a reindex operation Empty Poller Output Table ------------------------- During normal poller operation, all retrieved results are intermediately stored in the table named poller_output After execution of cmd.php or Spine, this table holds all results. The poller.php finally issues all rrdtool update operations. Thus, after polling has completed, the table should be empty. Conditions may arise, where the table is not (completely) emptied. The most often known issue is lack of php memory. In those cases, the table is bigger than the php memory size, thus not all items are handled correctly. If that issue occurs, you may save all pending updates *after increasing PHP memory appropriately* by running this very script. Calling the script with the parameter `--help` yields shell>php -q poller_output_empty.php --help Cacti Empty Poller Output Table Script 1.0, Copyright 2004-2018 - The Cacti Group usage: poller_output_empty.php [-h] [--help] [-v] [--version] -v --version - Display this help message -h --help - Display this help message You see, no parameter is required for operating successfully. Under normal circumstances, running this script should yield shell>php -q poller_output_empty.php There were 0, RRD updates made this pass shell> In case, you hit the poller process or if the table was really not fully processed, you may find shell>php -q poller_output_empty.php OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.04 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.00 r:0.05 OK u:0.00 s:0.01 r:0.06 There were 21, RRD updates made this pass shell> If logging level verbosity was switched to `DEBUG` you may find additional debug messages that usually show up in `cacti.log` Reapply Suggested Names to Graphs --------------------------------- For a general understanding of suggested names used with data queries, please see ?. Be aware, that changes to the `Suggested Names` section of a data query will not automatically be propagated to all existing graphs. This is, where poller_graphs_reapply_names.php drops in. Calling the script with the parameter `--help` yields shell>php -q poller_graphs_reapply_names.php --help Cacti Reapply Graph Names Script 1.0, Copyright 2004-2018 - The Cacti Group usage: poller_graphs_reapply_names.php -id=[host_id|All][host_id1|host_id2|...] [-s=[search_string] [-d] [-h] [--help] [-v] [--version] -id=host_id - The host_id or 'All' or a pipe delimited list of host_id's -s=search_str - A graph template name or graph title to search for -d - Display verbose output during execution -v --version - Display this help message -h --help - Display this help message Assume a situation, where the suggested names where changed for the standard data query named `SNMP - Get Mounted Partitions`. In this case, you will want to rework all graphs for this data query only. A verbose run will yield shell>php -q poller_graphs_reapply_names.php -id=All -d -s="Used space" WARNING: Do not interrupt this script. Interrupting during rename can cause issues DEBUG: There are '6' Graphs to rename DEBUG: Graph Name 'Localhost - Used Space - Memory Buffers' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - Memory Buffers' DEBUG: Graph Name 'Localhost - Used Space - Real Memory' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - Real Memory' DEBUG: Graph Name 'Localhost - Used Space - Swap Space' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - Swap Space' DEBUG: Graph Name 'Localhost - Used Space - /' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - /' DEBUG: Graph Name 'Localhost - Used Space - /sys' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - /sys' DEBUG: Graph Name 'Localhost - Used Space - /boot' starting DEBUG: Graph Rename Done for Graph 'Localhost - Used Space - /boot' Notice my miss-spelling of the word “Space”. The `-s=` option is not case sensitive. Copy Local Cacti Users ---------------------- For use and understanding the limitation of this script, it is of importance to read ? Calling the script with the parameter `--help` yields shell>php -q copy_user.php --help It is highly recommended that you use the web interface to copy users as this script will only copy Local Cacti users. Syntax: php copy_cacti_user.php