#!/usr/local/bin/bash
# Observium to LibreNMS conversion

####################### SCRIPT DESCRIPTION ########################
# This script converts the XML files from Observium back to RRD   #
# files for use with LibreNMS. It then adds the device using the  #
# Addhost function of LibreNMS                                    #
###################################################################

########################### DIRECTIONS ############################
# Enter values for L_RRDPATH, ADDHOST, SNMPSTRING, and NODELIST.  #
#The default should work if you put the files in the same location#
###################################################################

############################# CREDITS #############################             
# LibreNMS work is done by a great group - http://librenms.org    #
# Script Written by - Dan Brown - http://vlan50.com               #
###################################################################

# Enter path to LibreNMS RRD directories
L_RRDPATH=/var/www/librenms/rrd/
# Enter path to LibreNMS addhost module
ADDHOST=/var/www/librenms/addhost.php
# Enter your unique SNMP String
SNMPSTRING=cisconetwork
# Enter path to nodelist text file
NODELIST=/tmp/nodelist.txt

# Loop enters RRD directory and then each folder based on contents of node list text file
while read line 
	# Enter the directory
	do cd $L_RRDPATH"${line%/*}"
		# Convert from XML back to RRD
		for f in *.xml; do rrdtool restore ${f} `echo ${f} | cut -f1 -d .`.rrd; done;
		# Remove leftover XML files
		rm *.xml;
		# Add the host to LibreNMS
		php $ADDHOST "${line%/*}" $SNMPSTRING v2c;
		# Change back to parent directory
		cd ..; 
	done < $NODELIST