From 2f0af5d859334dd3c214dce7bac2f3e8b4e2397a Mon Sep 17 00:00:00 2001 From: Peter Pletcher Date: Fri, 20 Dec 2019 14:22:35 -0800 Subject: [PATCH] Add snmp-scan option for cron container (#53) --- doc/docker/environment-variables.md | 5 +++++ examples/compose/librenms.env | 3 +++ rootfs/etc/cont-init.d/05-svc-cron.sh | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 0a5575e..7524e47 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -34,6 +34,11 @@ * `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE`: Enable LibreNMS billing for this container cronjobs (default `true`) * `LIBRENMS_CRON_CHECK_SERVICES_ENABLE`: Enable LibreNMS service checks for this container cronjobs (default `true`) * `LIBRENMS_CRON_POLLER_ENABLE`: Enable LibreNMS polling for this container cronjobs (default `true`) +* `LIBRENMS_CRON_SNMPSCAN_ENABLE`: Enable LibreNMS SNMP network scanning for this container cronjobs (default `false`) +* `LIBRENMS_CRON_SNMPSCAN_INTERVAL`: SNMP network scanning cron interval (daily, in "Minute Hour", default `5 0`) +* `LIBRENMS_CRON_SNMPSCAN_NETS`: Networks to scan for SNMP network scanning, in CIDR notation. Multiple networks can be specified separated by a comma. If this is not set the default is to scan networks defined in `$config['nets']` +* `LIBRENMS_CRON_SNMPSCAN_THREADS`: SNMP network scanning threads to use (default `32`) +* `LIBRENMS_CRON_SNMPSCAN_LOGFILE`: SNMP network scanning cron log file (default `/dev/null`) ### Syslog-ng diff --git a/examples/compose/librenms.env b/examples/compose/librenms.env index d200733..698d952 100644 --- a/examples/compose/librenms.env +++ b/examples/compose/librenms.env @@ -15,6 +15,9 @@ LIBRENMS_CRON_BILLING_ENABLE=true LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true LIBRENMS_CRON_POLLER_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_NETS=192.168.0.0/24,192.168.1.0/24 +LIBRENMS_CRON_SNMPSCAN_LOGFILE=/data/logs/snmp-scan.log LIBRENMS_SNMP_COMMUNITY=librenmsdocker MEMCACHED_HOST=memcached diff --git a/rootfs/etc/cont-init.d/05-svc-cron.sh b/rootfs/etc/cont-init.d/05-svc-cron.sh index a40c537..fbe4c54 100644 --- a/rootfs/etc/cont-init.d/05-svc-cron.sh +++ b/rootfs/etc/cont-init.d/05-svc-cron.sh @@ -13,6 +13,13 @@ LIBRENMS_CRON_BILLING_ENABLE=${LIBRENMS_CRON_BILLING_ENABLE:-true} LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=${LIBRENMS_CRON_BILLING_CALCULATE_ENABLE:-true} LIBRENMS_CRON_CHECK_SERVICES_ENABLE=${LIBRENMS_CRON_CHECK_SERVICES_ENABLE:-true} LIBRENMS_CRON_POLLER_ENABLE=${LIBRENMS_CRON_POLLER_ENABLE:-true} +LIBRENMS_CRON_SNMPSCAN_ENABLE=${LIBRENMS_CRON_SNMPSCAN_ENABLE:-false} +LIBRENMS_CRON_SNMPSCAN_INTERVAL=${LIBRENMS_CRON_SNMPSCAN_INTERVAL:-"5 0"} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS:-""} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS:+",$LIBRENMS_CRON_SNMPSCAN_NETS"} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS//,/ -r } +LIBRENMS_CRON_SNMPSCAN_THREADS=${LIBRENMS_CRON_SNMPSCAN_THREADS:-32} +LIBRENMS_CRON_SNMPSCAN_LOGFILE=${LIBRENMS_CRON_SNMPSCAN_LOGFILE:-/dev/null} # Continue only if sidecar cron container if [ "$SIDECAR_CRON" != "1" ]; then @@ -83,6 +90,15 @@ else echo "Disable polling cron" fi +if [ "$LIBRENMS_CRON_SNMPSCAN_ENABLE" = "true" ]; then + echo "Enable snmp-scan cron" + cat >> ${CRONTAB_PATH}/librenms <> ${LIBRENMS_CRON_SNMPSCAN_LOGFILE} 2>&1 +EOL +else + echo "Disable snmp-scan cron" +fi + # Fix perms echo "Fixing crontabs permissions..." chmod -R 0644 ${CRONTAB_PATH}