#!/bin/bash # # Copyright (C) 2005-2020 Gabriel Moreau # License GNU GPL version 2 or later # # 2007/10/23 Gabriel Moreau # 2010/11/03 Gabriel Moreau # 2011/03/30 Gabriel Moreau - make it generic # 2017/11/04 Gabriel Moreau - all reworks - use tab export PATH=/bin:/sbin:/usr/bin:/usr/sbin export LANG=C SITE_NAME='' REMOTE_SERVER=localhost REMOTE_USER='' REMOTE_FOLDER=/var/www/klask/ GRAPH_MODULO=9 GRAPH_SHIFT=1 CACHE_TIMEOUT=50 CACHE_FOLDER='/tmp/klask-push-web' if [ -f /etc/klask/push-web.conf ] then . /etc/klask/push-web.conf fi # remote command DOT=/usr/bin/dot mkdir -p ${CACHE_FOLDER} if [ ! -d ${CACHE_FOLDER} ] then echo "Error: Folder ${CACHE_FOLDER} do not exist !" exit 1 fi cd ${CACHE_FOLDER} LOCALTIME=$(date "+%Y-%m-%d %H:%M") TIMEFILE=$(date "+%Y-%m-%d.%H-%M") find ${CACHE_FOLDER}/ -type f -a -mtime +${CACHE_TIMEOUT} -delete klask exportsw --format dot --modulo ${GRAPH_MODULO} --shift ${GRAPH_SHIFT} > ${CACHE_FOLDER}/switch-map.txt.new klask exportsw > ${CACHE_FOLDER}/switch-db.txt.new klask exportdb > ${CACHE_FOLDER}/hostname-db.txt klask ip-free > ${CACHE_FOLDER}/ipfree-db.txt klask bad-vlan-id > ${CACHE_FOLDER}/badvlan-db.txt cmp --silent ${CACHE_FOLDER}/switch-db.txt.new ${CACHE_FOLDER}/switch-db.txt || { mv -f ${CACHE_FOLDER}/switch-db.txt.new ${CACHE_FOLDER}/switch-db.${TIMEFILE}.txt; ln -sf ${CACHE_FOLDER}/switch-db.${TIMEFILE}.txt ${CACHE_FOLDER}/switch-db.txt } cmp --silent ${CACHE_FOLDER}/switch-map.txt.new ${CACHE_FOLDER}/switch-map.txt || { mv -f ${CACHE_FOLDER}/switch-map.txt.new ${CACHE_FOLDER}/switch-map.${TIMEFILE}.txt; ln -sf ${CACHE_FOLDER}/switch-map.${TIMEFILE}.txt ${CACHE_FOLDER}/switch-map.txt } # keep trace of old switch map old_switch_db=$((echo 'command klask exportsw --format txt'; (cd ${CACHE_FOLDER}/; ls -1 switch-db.20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].[0-9][0-9]-[0-9][0-9].txt;) \ | sed -e 's/^switch-db\.//; s/\.txt$//;' \ | xargs -r -I {} printf " %s\n" '{}' '{}' \ ) \ | paste -sd ',' -) old_switch_map=$((echo 'graphviz';\ (cd ${CACHE_FOLDER}/; ls -1 switch-map.20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].[0-9][0-9]-[0-9][0-9].txt;) \ | sed -e 's/^switch-map\.//; s/\.txt$//;' \ | xargs -r -I {} printf " %s\n" '{}' '{}' \ )\ | paste -sd ',' -) cat < ${CACHE_FOLDER}/index.html Klask mapping net-tools

Klask Tool for mapping the local network - site ${SITE_NAME} ${LOCALTIME}

List of all IP addresses detected on the local network (on all VLANs) since the origin of the database (except those that have been deleted manually and voluntarily).

END klask exportdb --format html >> ${CACHE_FOLDER}/index.html cat <> ${CACHE_FOLDER}/index.html
END if [ "${REMOTE_SERVER}" = "localhost" ] then rsync --times \ /usr/share/klask/sorttable-klask.js \ /usr/share/klask/svg-pan-zoom-klask.js \ /usr/share/klask/style-klask.css \ ${CACHE_FOLDER}/index.html \ ${CACHE_FOLDER}/*-db.txt \ ${CACHE_FOLDER}/switch-map.txt \ ${CACHE_FOLDER}/*.20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].[0-9][0-9]-[0-9][0-9].txt \ ${REMOTE_FOLDER}/ [ -x ${DOT} ] && (cd ${REMOTE_FOLDER}; [ switch-map.txt -nt switch-map.svg ] && ${DOT} -T svg switch-map.txt > switch-map.svg; [ switch-map.txt -nt switch-map.png ] && ${DOT} -T png switch-map.txt > switch-map.png) else rsync --times \ /usr/share/klask/sorttable-klask.js \ /usr/share/klask/svg-pan-zoom-klask.js \ /usr/share/klask/style-klask.css \ ${CACHE_FOLDER}/index.html \ ${CACHE_FOLDER}/*-db.txt \ ${CACHE_FOLDER}/switch-map.txt \ ${CACHE_FOLDER}/*.20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].[0-9][0-9]-[0-9][0-9].txt \ ${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_FOLDER}/ ssh ${REMOTE_USER}@${REMOTE_SERVER} "(cd ${REMOTE_FOLDER}; [ switch-map.txt -nt switch-map.svg ] && ${DOT} -T svg switch-map.txt > switch-map.svg; [ switch-map.txt -nt switch-map.png ] && ${DOT} -T png switch-map.txt > switch-map.png)" fi