Üdv mindenkinek!
Dióhéjban annyi a történet, hogy intézményi szinten alapból tiltva van minden switch minden portja ami használaton kívül van.
Amikor költözködések vannak különböző irodák közt vagy új eszközt helyezünk üzembe, akkor megy a nyálazás a topológiatérkép alapján, hogy ez az az eszköz, ennek az az IP-je és amaz a portja, majd belépek a webes felületén engedélyezem a portot. Csináltam egy oldalt, ahol be vannak állítva a hálózati eszközök (IP, snmp adatok, típus). Az oldal lekérdezi az adott eszközt snmp-n keresztül, hogy hány portja van majd kilistázza soronként a portokat, így láthatóvá válik az adott port aktuális állapota, admin state, mtu, speed, stb...
Minden sor végére tettem egy gombot:
echo" <tr> \n";
echo" <td>".$i."</td> \n";
echo" <td>".$ifname."</td> \n";
echo" <td style='background-color:".$statec."'>".$state."</td> \n";
echo" <td style='background-color:".$ifadminc."'>".$ifadmin."</td> \n";
echo" <td style='background-color:".$ifspeedc."'>".$ifspeed."</td> \n";
echo" <td>".$ifmtu."</td> \n";
echo" <td>".$ifchanged."</td> \n";
echo" <td>".$ifmac."</td> \n";
echo" <td>"."<form method='post'><input type='submit' name='button".$i."' value='".$buttval."'/></form></td> \n";
echo" </tr> \n";
Aminek adtam egy funkciót:
if(isset($_POST['button'.$i])) {
switch ($ifadmin){
case "ENABLED":
snmpset($ip, $commrw, $attr[5][$devices[0][4]].$i,'i','2');
break;
case "DISABLED":
snmpset($ip, $commrw, $attr[5][$devices[0][4]].$i,'i','1');
break;
}
//header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
//header('Location: '.$_SERVER['PHP_SELF']);
//header('Location: '.$_SERVER['REQUEST_URI']);
header("Refresh:0");
//include 'index.php';
//window.location.reload(true);
}
Ahogy látható is, a végén többféleképpen próbáltam az oldalt frissíteni a gombnyomás után.
2 eset szokott történni:
a) vagy lefrissül az oldal látszólag, de az állapotokat vagy nem kérdezi le újra vagy nem jelenik meg. Ha egy portot letiltok, a státusza ugyanúgy ENABLED marad csak ha kézzel ráfrissítek az oldalra, akkor látszik a valódi aktuális állapota
b) frissül az oldal, de csak addig a sorig listázza ki a portokat, amelyikben nyomtam a gombot (azt már nem, csak az előtte lévőket).
Ez utóbbit gondoltam úgy felhasználni, hogy a for cikluson kívülre rakom a gombot, de az azért nem lesz jó, mert az első sorban látható: 'button'.$i így értelmét veszti. Lényegében ugyanaz a számláló pörgeti, ami a sorokat is a for ciklusban.
Mit gondoltok, lehet erre megoldás?
Egyszerűen csak annyit szeretnék, ha megnyomom a gombot és lefut a kód amit akarok, utána frissüljenek az értékek.
- 268 megtekintés
Hozzászólások
Ha mindenkeppen friss oldal kell, abbol nem lehet baj, ha a headerben Cache-Controllal teljesen letiltod a cachelest. (no-store?)
“Any book worth banning is a book worth reading.”
- A hozzászóláshoz be kell jelentkezni
Erre tippelnék én is.
Érdemes lenne egy időbélyeget kiraknod az oldalra, csak hogy lásd, hogy frissült-e.
Valamint az alábbit kiszúrtam a kódban, ez js?
window.location.reload(true);
Ha nem válaszolnék kommentben, hát küldj privátot!
- A hozzászóláshoz be kell jelentkezni
Igen, azzal is próbálkoztam.
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
Én megtűrnék pár sor dzsuvascriptet az oldalon és egy ajax(xhr) kérés keretében küldeném el a kérést és módosítanám az oldalt a válasz függvényében. Egyetlen akciógomb érdekében nem tölteném újra az egész oldalt :)
https://www.w3schools.com/xml/ajax_php.asp
A gomb típusát "submit"-ról cseréd "button"-re a, vagy js-be egy újabb sor: preventdefault (hogy ne küldje el az egész oldalt), a js függvényt meg onClick eseményre kösd.
- A hozzászóláshoz be kell jelentkezni
Szerintem első körben megpróbálom amit harlequin kolléga írt, aztán pedig körbejárom az Ajaxot (gondoltam rá, csak még nem igazán használtam).
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
- A hozzászóláshoz be kell jelentkezni
a probléma sztem máshol lesz: snmpset-ben vagy a lekérdezésben. Az include elé/az átirányítás után nem ártana egy exit . Minek fusson le feleslegesen az index.php ? (bár nem igazán érteni h mit csinálhat). Átirányítás előtt meg nem lehet semmi kimenet, még üres karakter sem!
"antiegalitarian, antiliberal, antidemocratic, and antipopular"
- A hozzászóláshoz be kell jelentkezni