Webes alap portkonfig - html, php, javascript, snmp

Sziasztok!

 

Egy viszonylag egyszerű weboldalt szeretnék összedobni, ahol a megadott IP-című eszközök port státuszait látom snmpget segítségével, illetve adott esetben snmpset-et UP-ba illetve DOWN-ba tudom tenni az operational statust.

Sajnos HTML, PHP és JavaScript kódokat inkább csak olvasni/értemezni tudom, illetve ha kell valamit módosítani a meglévő kódon.

Maga az SNMP kérés működik php-vel, de sík vagyok a többi részéhez.

Próbaképpen összeraktam egy statikus oldalt.
A táblázat egy létező 48 portos switch. Értelemszerűen megjelennének az adott portok állapotai és ettől függően a gombok BE vagy KI kapcsolhatnák a portot.

A felső php rész csak egy teszt, kipróbáltam a lekérést vele. Az eredmény 1 ha a port UP, 2 ha DOWN de van 3 és 4 állapot is (azok most nem lényegesek).
Pontosabban az snmpget által visszaadott érték:

STRING: 2

Valahogy úgy kellene megoldani a dolgot, hogy egy táblázatban lássam az adott portok aktuális állapotát.
Több eszköz esetén valószínűleg kézenfekvőbb lenne tömböket és ciklusokat használni - amennyiben erre van lehetőség -.
Ilyen apróságok jutottak eszembe, hogy az UP-ban lévő portok cellájának a háttérszíne zöld, a többi más színű.
Mivel alapvetően C-ben programozok, így a JS közelebb állna hozzám, de ahhoz meg mindenféle könyvtárak kellenek (mivel alapból nincs snmp library) ellenben a php-val. Php esetén a legnagyobb gondom az, hogy adatbázist kellene mögé rakni és windows szerveren fut az egész így fogalmam sincs hogyan kell :D LAMP-ot szoktam összedobni ha kellett valamihez de ez a Windowsos környezet eléggé ismeretlen.

 

Szóval jah... vannak hiányosságok bőven de ha valakinek van kedve játszani, szívesen veszem a segítséget. Ha a végére kijön valami használható, természetesen a köz javát szolgálja.

 

Az egész apropója egyébként az, hogy portsecurity van a cégnél olyan szinten, hogy egyszerűen a nem használt portok tiltva vannak. A lényeg az, hogy emiatt sokkal könnyebb ilyen formában hibát keresni és ki/bekapcsolgatni a portokat. Az eszközök döntő többségének webes felülete is van viszont sokkal egyszerűbb az egész ha egy helyen van és nem kell egyesével az eszközökben futkosni. Van felügyeleti rendszer (Observium) de az csak read-only (más a célja, másra is használjuk).

 

Szóval most itt tartok:

<!DOCTYPE html>
<html lang="hu">

<head>
	<title>Gombócoskáposzta</title>
	<meta charset="UTF-8">
	<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 0px;
  text-align: center;    
}
</style>
</head>
<body style="background-color:white;">
<?php
$test = snmpget("1.1.1.1", "public", "1.3.6.1.2.1.2.2.1.8.8");
$txt = "proba";


echo $txt;
echo "<br>";
echo $test;
echo "<br>";

?>

<table style="width:100%">
  <tr>
    <th>Switch</th>
    <th colspan="48">1.1.1.1</th>
  </tr>
  <tr>
    <td><b>Port</td>
    <td><b>1</td>
    <td><b>2</td>
	<td><b>3</td>
    <td><b>4</td>
	<td><b>5</td>
    <td><b>6</td>
	<td><b>7</td>
    <td><b>8</td>
	<td><b>9</td>
    <td><b>10</td>
	<td><b>11</td>
    <td><b>12</td>
	<td><b>13</td>
    <td><b>14</td>
	<td><b>15</td>
    <td><b>16</td>
	<td><b>17</td>
    <td><b>18</td>
	<td><b>19</td>
    <td><b>20</td>
	<td><b>21</td>
    <td><b>22</td>
	<td><b>23</td>
    <td><b>24</b>
	<td><b>25</td>
    <td><b>26</td>
	<td><b>27</td>
    <td><b>28</td>
	<td><b>29</td>
    <td><b>30</td>
	<td><b>31</td>
    <td><b>32</td>
	<td><b>33</td>
    <td><b>34</td>
	<td><b>35</td>
    <td><b>36</td>
	<td><b>37</td>
    <td><b>38</td>
	<td><b>39</td>
    <td><b>40</td>
	<td><b>41</td>
    <td><b>42</td>
	<td><b>43</td>
    <td><b>44</td>
	<td><b>45</td>
    <td><b>46</td>
	<td><b>47</td>
    <td><b>48</b></td>
  </tr>
  <tr>
    <td>Státusz</td>
    <td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Duplex</td>
    <td>F</td>
    <td>H</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>H</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>F</td>
    <td>H</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>H</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Sebesség</td>
    <td>10</td>
    <td>100</td>
	<td>100</td>
    <td>Gi</td>
	<td>10Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>100</td>
	<td>110</td>
    <td>Gi</td>
	<td>130</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>10</td>
    <td>100</td>
	<td>100</td>
    <td>Gi</td>
	<td>10Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>100</td>
	<td>110</td>
    <td>Gi</td>
	<td>130</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
  </tr>
   <tr>
    <td>Op. status</td>
    <td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Engedélyezés</td>
    <td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
  </tr>
</table>

</body>

</html>

Hozzászólások

Valamiért az a sejtésem, hogy újra felszeretnéd találni a meleg vizet. Nincs erre kész céleszköz?

ezt a 200 soros "semmit" pedig akar ki is vehetned....

Első körben kicsit algoritmizáld a portok állapotát megjelenítő részt, egy tömbbe vedd fel milyen eszközöket / portokat akarsz figyelni ebbe tömbbe tárold el a lekérdezett állapotokat és ciklussal állítsd elő a kimenetet (aztán kezdj el valami megjelenítést és üzleti logikát szétválasztó kis keretrendszer felé pislogni, pl. symfony vagy zend framework mielőtt nagyon megszokod, hogy ilyen rondán is lehet működő dolgokat összerakni :)

Desktop: Windows10 | Server: CentOS