Autor | Zpráva | ||
---|---|---|---|
Gogo_v Profil |
#1 · Zasláno: 17. 12. 2011, 13:10:01
Dobrý den. pokouším se zjistit kde jsem udělal chybu ale nějak na to ne a ne přijít.
mam tři pole První pole ifI Array ( [11] => 11 [20] => 20 [22] => 22 [25] => 25 [26] => 26 ) Druhé pole bridge Array ( [:mib-2.17.4.3.1.2.0.2.155.75.144.14] => 20 [:mib-2.17.4.3.1.2.0.2.155.98.68.87] => 20 [:mib-2.17.4.3.1.2.0.2.155.100.57.98] => 11 [:mib-2.17.4.3.1.2.0.2.155.128.23.192] => 11 [:mib-2.17.4.3.1.2.0.10.138.147.156.114] => 25 [:mib-2.17.4.3.1.2.0.11.253.90.210.178] => 25 [:mib-2.17.4.3.1.2.196.125.79.189.49.192] => 25 ) třetí pole macs Array ( [:mib-2.17.4.3.1.1.0.2.155.75.144.14] => 00:02:9B:4B:90:0E [:mib-2.17.4.3.1.1.0.2.155.98.68.87] => 00:02:9B:62:44:57 [:mib-2.17.4.3.1.1.0.2.155.100.57.98] => 00:02:9B:64:39:62 [:mib-2.17.4.3.1.1.0.2.155.128.23.192] => 00:02:9B:80:17:C0 [:mib-2.17.4.3.1.1.0.10.138.147.156.114] => 00:0A:8A:93:9C:72 [:mib-2.17.4.3.1.1.0.11.253.90.210.178] => 00:0B:FD:5A:D2:B2 [:mib-2.17.4.3.1.1.196.125.79.189.49.192] => C4:7D:4F:BD:31:C0 ) pokouším se načíst hodnoty s pole foreach($macs as $idm => $mac) { // projdeme seznam MAC adres echo "<br> bridge <br>"; print_r($bridge); echo "<br> MAC <br>"; print_r($macs); // vypis z array viz. výše echo "<br> Bridge ID ==*".$idm . "*<br>"; echo "final=".$bridge[$idm]; ?????? << Tady mi to ovšem nevrací nic :( // a dál to už pochopitelně nefunguje .... $ifIndex = $ifI[$bridge[$idm]]; // ifIndex dostaneme z indexu záznamu, převedený na číslo portu a pak na ifIndex $ifIndex = trim($ifIndex); echo "<br>IfID =". $ifIndex. "--<br>"; } Výsledek z předcházejících echo Bridge ID ==*:mib-2.17.4.3.1.1.0.2.155.75.144.14* final= IfID =-- Děkuji moc za kopanec kde jsem co zmastil :) |
||
Majkl578 Profil |
#2 · Zasláno: 17. 12. 2011, 16:08:43
Gogo_v:
„ echo "final=".$bridge[$idm]; ?????? << Tady mi to ovšem nevrací nic :( “
A mělo by? Vždyť pole v $bridge žádný klíč :mib-2.17.4.3.1.1.0.2.155.75.144.14 neobsahuje.
|
||
Gogo_v Profil |
#3 · Zasláno: 17. 12. 2011, 20:03:01 · Upravil/a: Gogo_v
Majkl578:
no mělo protože to samozřejmě v tom poli je blbě sem to překopíroval. :) mam spíše podezření jestli mu na začátku v klíči nevadí ta dvojtečka. Odkaz na celkový náhled dat |
||
Majkl578 Profil |
#4 · Zasláno: 17. 12. 2011, 21:53:26 · Upravil/a: Majkl578
[#3] Gogo_v:
V tom výpisu na odkaze, který jsi poslal, vidím to co tady - rozdílné klíče. Viz první: :mib-2.17.4.3.1.2.0.11.253.90.210.178 :mib-2.17.4.3.1.1.0.11.253.90.210.178 :mib-2.17.4.3.1.2.0.12.66.28.141.200 :mib-2.17.4.3.1.1.0.12.66.28.141.200 :mib-2.17.4.3.1.2.0.12.66.47.164.231 :mib-2.17.4.3.1.1.0.12.66.47.164.231 Jinak je to nepřehledné, vhodnější by bylo místo print_r používat var_dump (v tomto případě možná spíš var_export). „mam spíše podezření jestli mu na začátku v klíči nevadí ta dvojtečka“ To určitě ne. Leda nějaká mezera nebo něco podobného tvářícího se na první pohled stejně. |
||
Gogo_v Profil |
#5 · Zasláno: 18. 12. 2011, 11:21:23 · Upravil/a: Gogo_v
No možná bude lepší celá funkce :) podle mně by měl projít celá pole a porovnat každou položku. A tím pádem tam shodu najit. Ty rozdílné klíče samozřejmě vidím ale vidím i stejné a přesto to nevypíše níc. Možná tam ma opravdu nejakou triviální chybu. Základ funkce je převzat ze stránek samuraj-cz.com Tam mu to ale běhá na windows takže jsem to upravoval na Linux a asi sem to někde podělal :(
// pole portů doplní o MAC adresu function getMACs(&$interfaces, $ip, $comm) { $vlans = array(); getInterPart($vlans, $ip, $comm, ".1.3.6.1.4.1.9.9.46.1.3.1.1.18", "Index"); // VLAN ifIndex getInterPart($vlans, $ip, $comm, ".1.3.6.1.4.1.9.9.46.1.3.1.1.3", "Type"); // VLAN type, 1 - OK foreach($vlans as $vlan_id => $vlan) if($vlan["Type"] == 1) { $macs = array(); getInterPart3($macs, $ip, $comm."@".$vlan_id, ".1.3.6.1.2.1.17.4.3.1.1"); // seznam MAC adres pro danou VLAN var_export($macs); $bridge = array(); getInterPart3($bridge, $ip, $comm."@".$vlan_id, ".1.3.6.1.2.1.17.4.3.1.2"); // urceni, kteremu bridge portu MAC adresa patri $ifI = array(); getInterPart2($ifI, $ip, $comm."@".$vlan_id, ".1.3.6.1.2.1.17.1.4.1.2"); // k bridge portu urci jeho interface index echo "<br> ifI <br>"; var_export($ifI); foreach($macs as $idm => $mac) { // projdeme seznam MAC adres echo "<br> bridge <br>"; var_export($bridge); echo "<br> macs <br>"; var_export($macs); echo "<br> Bridge ID ==*".$idm . "*<br>"; echo "final=".$bridge[$idm]; $ifIndex = $ifI[$bridge[$idm]]; // ifIndex dostaneme z indexu záznamu, převedený na číslo portu a pak na ifIndex $ifIndex = trim($ifIndex); echo "<br>IfID = ". $ifIndex. "--<br>"; if($interfaces[$ifIndex]["Trunk"] == 2){echo "<br> MAC = ".$mac; $interfaces[$ifIndex]["MAC"] = $mac; } else $interfaces[$ifIndex]["MAC"] = ""; } } } P.S. Tak dal jsem si říct a přes str_replace přepsal ty kliče ... a funguje to. Sice jsem to nepochopil ... ale asi to ta funkce která čte SNMP data nějak jinak vrací ... každopádně díky za Váš čas |
||
Časová prodleva: 12 let
|
0