| [85] | 1 | #!/bin/bash |
|---|
| 2 | # |
|---|
| [355] | 3 | # 2007/10/23 Gabriel Moreau |
|---|
| 4 | # 2010/11/03 Gabriel Moreau |
|---|
| 5 | # 2011/03/30 Gabriel Moreau - make it generic |
|---|
| 6 | # 2017/11/04 Gabriel Moreau - all reworks - use tab |
|---|
| [85] | 7 | |
|---|
| [344] | 8 | export PATH=/bin:/sbin:/usr/bin:/usr/sbin |
|---|
| 9 | export LANG=C |
|---|
| 10 | |
|---|
| [85] | 11 | SITE_NAME='' |
|---|
| 12 | REMOTE_SERVER=localhost |
|---|
| 13 | REMOTE_USER='' |
|---|
| 14 | REMOTE_FOLDER=/var/www/klask/ |
|---|
| 15 | |
|---|
| [292] | 16 | GRAPH_MODULO=9 |
|---|
| 17 | GRAPH_SHIFT=1 |
|---|
| 18 | |
|---|
| [87] | 19 | if [ -f /etc/klask/push-web.conf ] |
|---|
| [85] | 20 | then |
|---|
| 21 | . /etc/klask/push-web.conf |
|---|
| 22 | fi |
|---|
| 23 | |
|---|
| [87] | 24 | TMP='/tmp/klask-push-web' |
|---|
| [85] | 25 | |
|---|
| [87] | 26 | |
|---|
| 27 | # remote command |
|---|
| 28 | DOT=/usr/bin/dot |
|---|
| [85] | 29 | |
|---|
| [87] | 30 | |
|---|
| [344] | 31 | mkdir -p ${TMP} |
|---|
| [87] | 32 | if [ ! -d ${TMP} ] |
|---|
| [85] | 33 | then |
|---|
| 34 | echo "Error: Folder ${TMP} do not exist !" |
|---|
| 35 | exit 1 |
|---|
| 36 | fi |
|---|
| 37 | cd ${TMP} |
|---|
| 38 | |
|---|
| 39 | |
|---|
| [344] | 40 | LOCALTIME=$(date "+%Y-%m-%d %H:%M") |
|---|
| [85] | 41 | |
|---|
| 42 | |
|---|
| [344] | 43 | klask exportsw --format dot --modulo ${GRAPH_MODULO} --shift ${GRAPH_SHIFT} > ${TMP}/switch-map.txt |
|---|
| [85] | 44 | |
|---|
| 45 | |
|---|
| [344] | 46 | klask exportdb > ${TMP}/hostname-db.txt |
|---|
| 47 | klask exportsw > ${TMP}/switch-db.txt |
|---|
| 48 | klask ip-free > ${TMP}/ipfree-db.txt |
|---|
| 49 | klask bad-vlan-id > ${TMP}/badvlan-db.txt |
|---|
| [85] | 50 | |
|---|
| 51 | |
|---|
| [344] | 52 | cat <<END > ${TMP}/index.html |
|---|
| [349] | 53 | <!DOCTYPE html> |
|---|
| [350] | 54 | <html lang="en"> |
|---|
| [85] | 55 | <head> |
|---|
| 56 | <link rel="stylesheet" type="text/css" href="style-klask.css" /> |
|---|
| [102] | 57 | <meta http-equiv="refresh" content="1800"> |
|---|
| [349] | 58 | <title>Klask mapping net-tools</title> |
|---|
| [85] | 59 | <noscript> |
|---|
| 60 | </noscript> |
|---|
| 61 | <script src="sorttable-klask.js"></script> |
|---|
| 62 | <script> |
|---|
| 63 | function delayedRefresh() { |
|---|
| 64 | setTimeout( "refresh()", 1800*1000 ); |
|---|
| 65 | } |
|---|
| 66 | |
|---|
| 67 | function refresh() { |
|---|
| 68 | history.go(0); |
|---|
| 69 | } |
|---|
| [355] | 70 | |
|---|
| 71 | function selectTab(event, tabName) { |
|---|
| 72 | var i; |
|---|
| 73 | var x = document.getElementsByClassName("selectableTabContent"); |
|---|
| 74 | var tablinks = document.getElementsByClassName("selectableTabButton"); |
|---|
| 75 | for (i = 0; i < x.length; i++) { |
|---|
| 76 | x[i].style.display = "none"; |
|---|
| 77 | } |
|---|
| 78 | for (i = 0; i < x.length; i++) { |
|---|
| 79 | tablinks[i].id = ""; |
|---|
| 80 | } |
|---|
| 81 | document.getElementById(tabName).style.display = "block"; |
|---|
| 82 | event.currentTarget.id = "selected"; |
|---|
| 83 | } |
|---|
| [85] | 84 | </script> |
|---|
| 85 | </head> |
|---|
| 86 | <body onload="delayedRefresh"> |
|---|
| 87 | <h1> |
|---|
| [338] | 88 | <b><a href="http://servforge.legi.grenoble-inp.fr/projects/klask" class="circle">Klask</a></b> |
|---|
| [337] | 89 | Tool for <a href="switch-map.png">mapping</a> (<a href="switch-map.png">png</a>|<a href="switch-map.svg">svg</a>) |
|---|
| [336] | 90 | the local network [${LOCALTIME}] - site ${SITE_NAME} |
|---|
| [85] | 91 | </h1> |
|---|
| 92 | |
|---|
| [331] | 93 | <div id="navbar"> |
|---|
| 94 | <ul> |
|---|
| [355] | 95 | <li class="selectableTabButton" onclick="selectTab(event, 'IP_detected')" id="selected">IP detected</li> |
|---|
| 96 | <li class="selectableTabButton" onclick="selectTab(event, 'IP_available')">IP available</li> |
|---|
| 97 | <li class="selectableTabButton" onclick="selectTab(event, 'VLAN_mismatch')">VLAN mismatch</li> |
|---|
| 98 | <li class="selectableTabButton" onclick="selectTab(event, 'MAP')">MAP (png)</li> |
|---|
| 99 | <li class="selectableTabButton" onclick="selectTab(event, 'RAW_data')">RAW data</li> |
|---|
| [331] | 100 | </ul> |
|---|
| 101 | </div> |
|---|
| [85] | 102 | |
|---|
| [331] | 103 | <div id="content"> |
|---|
| [355] | 104 | |
|---|
| 105 | <div id="IP_detected" class="selectableTabContent"> |
|---|
| 106 | <p> |
|---|
| 107 | List all IP that have been detected on the local network. |
|---|
| 108 | </p> |
|---|
| [85] | 109 | END |
|---|
| 110 | |
|---|
| [344] | 111 | klask exportdb --format html >> ${TMP}/index.html |
|---|
| [85] | 112 | |
|---|
| [344] | 113 | cat <<END >> ${TMP}/index.html |
|---|
| [355] | 114 | </div> |
|---|
| 115 | |
|---|
| 116 | <div id="IP_available" class="selectableTabContent" style="display:none"> |
|---|
| 117 | <p> |
|---|
| 118 | List all IP free (never use or not used since two years). |
|---|
| 119 | Theses IP are available for affecting them to the new computer. |
|---|
| 120 | </p> |
|---|
| [85] | 121 | END |
|---|
| 122 | |
|---|
| [355] | 123 | klask ip-free --format html >> ${TMP}/index.html |
|---|
| [85] | 124 | |
|---|
| [355] | 125 | cat <<END >> ${TMP}/index.html |
|---|
| 126 | </div> |
|---|
| [85] | 127 | |
|---|
| [355] | 128 | <div id="VLAN_mismatch" class="selectableTabContent" style="display:none"> |
|---|
| 129 | <p> |
|---|
| 130 | List all computers connected on switches where the VLAN is misconfigured. |
|---|
| 131 | Return the port and the VLAN to be configured on switches. |
|---|
| 132 | </p> |
|---|
| [85] | 133 | END |
|---|
| 134 | |
|---|
| [355] | 135 | klask bad-vlan-id --format html >> ${TMP}/index.html |
|---|
| [85] | 136 | |
|---|
| [355] | 137 | cat <<END >> ${TMP}/index.html |
|---|
| 138 | </div> |
|---|
| [85] | 139 | |
|---|
| [355] | 140 | <div id="MAP" class="selectableTabContent" style="display:none"> |
|---|
| 141 | <p> |
|---|
| 142 | Direct link to map format <a href="switch-map.png">png</a> or <a href="switch-map.svg">svg</a>. |
|---|
| 143 | </p> |
|---|
| 144 | <img class="map" src="switch-map.png"> |
|---|
| 145 | </div> |
|---|
| [329] | 146 | |
|---|
| [355] | 147 | <div id="RAW_data" class="selectableTabContent" style="display:none"> |
|---|
| 148 | <p> |
|---|
| 149 | The main raw results of Klask are accessible directly, via <tt>wget</tt> or <tt>curl</tt> for example, for a specific treatment: |
|---|
| 150 | <ul> |
|---|
| 151 | <li><a href="hostname-db.txt">Computers DB</a> (command <tt>klask exportdb --format txt</tt>),</li> |
|---|
| 152 | <li><a href="switch-db.txt">Switches DB</a> (command <tt>klask exportsw --format txt</tt>),</li> |
|---|
| 153 | <li><a href="ipfree-db.txt">IP available</a> (command <tt>klask ip-free --format txt</tt>),</li> |
|---|
| 154 | <li><a href="badvlan-db.txt">VLAN mismatch</a> (command <tt>klask bad-vlan-id --format txt</tt>),</li> |
|---|
| 155 | <li>Map format: <a href="switch-map.txt">dot source</a>, <a href="switch-map.png">png</a>, <a href="switch-map.svg">svg</a>.</li> |
|---|
| 156 | </ul> |
|---|
| 157 | </p> |
|---|
| 158 | </div> |
|---|
| [331] | 159 | </div> |
|---|
| [329] | 160 | |
|---|
| [343] | 161 | <p class="copyright"> |
|---|
| [341] | 162 | Klask (version $(klask version | grep ^Version | cut -f 2 -d ' ')) - $(klask version | grep ^Copyright | cut -f 1 -d '<') |
|---|
| 163 | </p> |
|---|
| [329] | 164 | </body> |
|---|
| 165 | </html> |
|---|
| 166 | END |
|---|
| 167 | |
|---|
| 168 | |
|---|
| [95] | 169 | if [ "${REMOTE_SERVER}" = "localhost" ] |
|---|
| [85] | 170 | then |
|---|
| [344] | 171 | rsync \ |
|---|
| [85] | 172 | /usr/share/klask/sorttable-klask.js \ |
|---|
| 173 | /usr/share/klask/style-klask.css \ |
|---|
| 174 | ${TMP}/index.html \ |
|---|
| 175 | ${TMP}/*-db.txt \ |
|---|
| 176 | ${TMP}/switch-map.txt \ |
|---|
| 177 | ${REMOTE_FOLDER}/ |
|---|
| 178 | |
|---|
| [193] | 179 | [ -x ${DOT} ] && (cd ${REMOTE_FOLDER}; ${DOT} -T svg switch-map.txt > switch-map.svg; ${DOT} -T png switch-map.txt > switch-map.png) |
|---|
| [85] | 180 | |
|---|
| 181 | else |
|---|
| [344] | 182 | rsync \ |
|---|
| [85] | 183 | /usr/share/klask/sorttable-klask.js \ |
|---|
| 184 | /usr/share/klask/style-klask.css \ |
|---|
| 185 | ${TMP}/index.html \ |
|---|
| 186 | ${TMP}/*-db.txt \ |
|---|
| 187 | ${TMP}/switch-map.txt \ |
|---|
| 188 | ${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_FOLDER}/ |
|---|
| 189 | |
|---|
| 190 | |
|---|
| [344] | 191 | ssh ${REMOTE_USER}@${REMOTE_SERVER} "(cd ${REMOTE_FOLDER}; ${DOT} -T svg switch-map.txt > switch-map.svg; ${DOT} -T png switch-map.txt > switch-map.png)" |
|---|
| [85] | 192 | fi |
|---|