Inloggen op switch met php
Ik vroeg me af hoe kan ik in die switch kan inloggen met behulp van php. Het is mij verteld dat het kan. Misschien dat iemand een voorbeeld kan posten met code.
Het gaat om een hp 2626 switch.
Alvast bedankt
Wat voro api's heeft die switch. Die gegevens moet je hebben voordat je kunt bepalen hoe je met die switch kunt communiceren.
Sorry ik ben vrij nieuw in dit vak. Maar hoe kan ik dat achterhalen?
in de documentatie van de switch. Er zal een protocol o.i.d. moeten zijn anders gaat het nooit lukken.
Ben inmiddels een stapje verder. Ik kan inloggen met mijn php scriptje op de switch. Dat kan ik alleen doen als ik het via cmd uitvoer. Niet als ik het via de root van apache wil doen. Krijg ik dat snmpwalk undefined is. Terwijl ik die functie in het log van php 5.2.6 aan het gezet samen met paar andere functies volgens een tutorial. Moet je dan nog een include toevoegen aan de pagina?
Dit zorgt ervoor dat je alle errors ziet. En je kunt ook even een document aanmaken met erin. Dan kun je zien of snmpwalk daarbij in staat.
Vaak gebruiken je command line en webserver verschillende php.ini files.
En weet je zeker dat je webserver ook bij de snmpwalk bestanden mag?
Wat is precies je foutmelding?
SNMP? Telnet? Webbased? SSH?
Dat krijg ik te zien als ik dat php bestand open
Ook heb ik een info bestand geopend en snmp staat er niet tussen:S
Gewijzigd op 01/01/1970 01:00:00 door Niels
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
//snmpget system stats
$host = '10.0.0.1';
$community = 'public';
//get system name
$sysname = snmpwalk($host, $community, ".1.3.6.1.2.1.1.3.0");
?>
//snmpget system stats
$host = '10.0.0.1';
$community = 'public';
//get system name
$sysname = snmpwalk($host, $community, ".1.3.6.1.2.1.1.3.0");
?>
Dat is mijn script tot nu toe
Het is me gelukt om snmp te kunne gebruiken. De oplossing was om bij wampserver naar het mapje php te gaan/ php extensions/ dan in die lijst snmp op te zoeken en aan te vinken;)
Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Niels
$revisionfilter = str_replace ("ProCurve J4900A Switch 2626, revision ", "" , "$revision");
echo "De revision van de switch is $revisionfilter";
Dat is de revision van mijn switch. Alleen wil ik het deel filteren wat ik niet nodig heb. Dit is wat er uitkomt als je dat scriptje gebruikt.
De revision van de switch is "H.10.50, ROM H.08.02 (/sw/code/build/fish(mkfs))"
Nu wil ik ook , ROM H.08.02 (/sw/code/build/fish(mkfs)) eruit filteren dat je alleen H.10.50 overhoud. Ik doe iets verkeerds maar kom er niet zo snel achter wat het is. Misschien iets met die () dat die dat niet pakt.
Is dat een vaste tekst of niet?
Dat is idd een vaste tekst. Veranderd niet
Ga eens spelen met regEx, zal je heel wat str_replace en explode werk besparen
Bedankt voor de tip heb het kunnen regelen met explode;) Is idd veel makkelijker om dan hele stukken tekst weg te halen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
//Inlog gegevens switch
$host = '10.0.0.1';
$community = 'public';
$macbase = snmpget ( $host, $community, ".1.3.6.1.2.1.17.1.1.0");
$connect = mysql_connect("localhost","root","");
if (!$connect)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("gegevens_db", $connect);
// Create table
mysql_select_db("gegevens_db", $connect);
$sql = "CREATE TABLE $macbase
(
Hostname varchar(30),
Revision varchar(15),
Uptime int(15),
Inkomend_verkeer int(15),
Uitgaand_verkeer int(15),
Status_poorten varchar(15),
Mac_poorten varchar(15)
)";
// Execute query
mysql_query($sql,$connect);
mysql_close($connect);
?>
//Inlog gegevens switch
$host = '10.0.0.1';
$community = 'public';
$macbase = snmpget ( $host, $community, ".1.3.6.1.2.1.17.1.1.0");
$connect = mysql_connect("localhost","root","");
if (!$connect)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("gegevens_db", $connect);
// Create table
mysql_select_db("gegevens_db", $connect);
$sql = "CREATE TABLE $macbase
(
Hostname varchar(30),
Revision varchar(15),
Uptime int(15),
Inkomend_verkeer int(15),
Uitgaand_verkeer int(15),
Status_poorten varchar(15),
Mac_poorten varchar(15)
)";
// Execute query
mysql_query($sql,$connect);
mysql_close($connect);
?>
Ik wil zeg maar de uitkomst van $macbase als naam zetten voor mijn tabel. Is dat mogelijk?
De output van die variabele macbase is namelijk een array en dat kan je niet in je database naam zetten lijkt het.
Nu om je gegevens in een db te plaatsen kan ik je even aanraden om de tutorial genaamd normaliseren hier even te bekijken, want een tabelnaam afhankelijk maken van een mac adres kan immers nooit de bedoeling zijn als jij een betrouwbare database wil hebben.
Ik ben nu bezig met database. Het id de bedoeling om deze te updaten steeds met de waardes uit een switch. Is het mogelijk om deze te updaten om de 20 seconde en dan de nieuwe data te over writen over de oude heen?
Waarom zou je dat willen? Je kunt beter elke keer een nieuwe entry doen, dan kun je een soort statistieken maken.
Waarom heb je een DB nodig als je die informatie steeds gaat overschrijven?
Idd, dan kun je het beter gewoon uitlezen. Opslaan doe je alleen als je de oude gegevens ook echt wilt gebruiken.