Platformfüggetlenség, NetworkPort kapcsolódó osztályok

+1 vote
asked Apr 5, 2013 in IRF tantárgy by anonymous  
retagged Apr 6, 2013 by micskeiz

Ehhez a más CIM névtérhez kapcsolódóan lenne még egy kérdésem.
Az egyes hálózati kártyákhoz tartozó IP címeket (IP és netmask) kell lekérdeznem.
Ezt Linux-on a NetworkPort és az IPProtocolEndpoint "összeasszociálásával" csináltam meg.

Viszont Windwos-on a már root/standardcimv2 névtérben levő NetworkPort-hoz associatedinstance-al keresve, nem kapok vissza olyan osztályt, amiben benne lenne az ip cím.

$c=Get-CimInstance -ClassName CIM_NetworkPort -Namespace root/standardcimv2
Get-CimAssociatedInstance -InputObject $c

E nélkül nem tudom hogy lehetne lekérni a hálózati kártyához tartozó ip-ket.
Ennek kiváltására egy "egyszerűbb" megoldást csináltam meg. Szeretném megtudni, hogy elfogadjátok e azt a megoldás, ha itt nem használom az asszociator-t hanem a NetworkPort-nál visszakapott Name-et hasonlítom az MSFT_NetIPAddress InterfaceAlias attribútumához és az alapján készítem el a filteremet?

További probléma, hogy nekem kellene majd a netmask is, amit a windows egyáltalán nem jelenít meg az IPProtocolEndpoint osztály SubnetMask attribútumánál. Itt mindenhol üres string-et kapok :S Ezzel mit lehet kezdeni?

Get-CimInstance CIM_IPProtocolEndpoint -Namespace root/standardcimv2
related to an answer for: Python platformfüggetlenség

1 Answer

0 votes
answered Apr 6, 2013 by micskeiz (2,565 points)  
  1. Windows alatt is vannak kapcsolóosztályok, érdemes például az IP-címet tároló példányból visszafelé kiindulni, és megnézni, hogy az mikhez kapcsolódik, és onnan hogyan jutsz el a hálózati kártyáig.

  2. Megtalálható a subnet információ is, csak kicsit trükkös:) Nézd meg például, hogy hogyan jeleníti meg a Get-NetIPAddress a keresett információt.

  3. Arra gondolom mostanra már Te is rájöttél, hogy teljesen platformfüggetlen módon nem lehet megoldani a feladatot, mert eleve a Linux és Windows részen implementált osztályok különböznek. Így mindenképp valahol majd kell olyan logika a szkriptben, ami a távoli fél OS-e alapján más-más példányt kérdez le.

commented Apr 7, 2013 by anonymous  
1. Próbálnám lekérni, hogy az "IP címet tároló példányhoz mi kapcsolódik", de nem sikerül a megfelelő parancsot végrehajtani. (hibát dob):
$c=Get-CimInstance CIM_IPProtocolEndpoint -Namespace root/standardcimv2
Get-CimAssociatedInstance -InputObject $c
Hogy lehetne ezeket mégis lekérni?

Egyébként úgy látom, hogy a NetworkPort egy LogicalPort leszármazott, ami pedig a CIM_PortImplementsEndpoint által van összekapcsolva a CIM_IPProtocolEndpointtal. De így mégsem sikerül összekapcsolnom:S

A fent említett megoldást nem elfogadható erre a problémára?
(Szeretném megtudni, hogy elfogadjátok e azt a megoldás, ha itt nem használom az asszociator-t hanem a NetworkPort-nál visszakapott Name-et hasonlítom az MSFT_NetIPAddress InterfaceAlias attribútumához és az alapján készítem el a filteremet?)

2. A subnet információt jó hogyha a Prefix által számolom ki?
asked Apr 8, 2013 in IRF tantárgy by anonymous  
edited Apr 9, 2013
NetworkPort és IPProtocolEndpoint összekapcsolása windows-on
...