IP Adresse mit WMI setzen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

IP Adresse mit WMI setzen

Beitragvon 2bock » Donnerstag 18. November 2004, 10:45

Hallo zusammen.

Ich habe jetzt einiges ausprobiert, bekomme es aber einfach nich hin. Es hapert bei mir mit den WMI Befehlen.

In VB(s) programmiert sieht das so aus:

Code: Alles auswählen

strComputer = "."
strIPAddress =Array("192.xxx.xxx.xxx")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.xxx.xxx.xxx")


Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
  errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
  errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
  If errEnable = 0 Then
    WScript.Echo "Die IP Adresse wurde geändert."
  Else
    WScript.Echo "Die IP Adresse konnte nicht geändert werden."
  End If
Next



Aber die Funktionsaufrufe sind anscheinend uner Python anders. (Das kann ich mir eigentlich gar nicht vorstellen"

Könnte mir jemand von euch sagen, wie die funktione , z.B. EnableStatic oder SetGateways unter Python aufgerufen werden müssen?

Vielen Dank schon mal vorab

Greetz 2bock :wink:
2bock_not_logged

Beitragvon 2bock_not_logged » Freitag 19. November 2004, 10:43

Ich habe mal angefangen etwas in Python damit zu probieren und hänge jetzt hier.

Code: Alles auswählen

# /usr/bin/python
# -*- coding: iso-8859-1 -*-


import wmi
c = wmi.WMI ()
errEnable = 1

interface = c.Win32_NetworkAdapterConfiguration (IPEnabled=1)
strIPAddress = ['1','9','2','.','N','N','N','.','N','N','N','.','N','N','N']
strSubnetMask = ['2','5','5','.','N','N','N','.','N','N','N','.','N']


for Adapter in interface:
    errEnable = Adapter.EnableStatic(strIPAddress, strSubnetMask)
   
if errEnable == 0:
    print "The IP address has been changed."
else:
    print "The IP address could not be changed."


Ich bekomme gesagt, das die funktion EnableStatic nur einen (sprich keinen) Parameter erwartet. Was mache ich falsch? Unter VB kannich halt diese 2 Parameter übergeben. Ich habe mich dann etwas in der wmi.py umgeschaut, doch gier steht, das "beliebig viele" Parameter erwartet werden. **kwarg oder so stand dort. Hmmmm. Also wo ist mein Denkfehler?

Danke für eure Hinweise und Anregungen.

Greetz from 2bock :wink:
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 19. November 2004, 12:10

Hi 2bock,

**kw bedeutet, daß die Funktion beliebig viele Argumente mit Schlüsselnamen (Keywordargs) erwartet. Wie heissen denn die beiden Parameter unter vb? Dann schreibst du

Code: Alles auswählen

    errEnable = Adapter.EnableStatic(IPAddress=strIPAddress, SubnetMask=strSubnetMask)

Statt IPAddress und Subnetmask natürlich die Namen der Parameter aus VB.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
2bock_not_logged

Re

Beitragvon 2bock_not_logged » Montag 22. November 2004, 12:24

Hi Dookie.

Das habeichschon ausprobiert. r bringt jetzt zwar nicht mehr die bisherige Fehlermeldung (das sit schon mal sehr gut), aber die IP wird nicht geänert. :-| . Vielleict muß ich die IP in ein array hängen? Das ist ja in dem Beipielcode auch so gemacht worden . ;-)
2bock_not_logged

Beitragvon 2bock_not_logged » Mittwoch 1. Dezember 2004, 15:15

Habe die IP Adresse in ein Array gehangen. Jetzt "funktioniert" es. ICh bekomme jetzt eine Fehlermeldung. Nr. 70. Heißt soviel wie ip Adresse ausserhalb des gültigen Bereichs. Aber sie ist in einem gültigen Bereich. Was nun?? Wisst ihr Rat oder habt einen Tip für mich?

Greetz from 2bock :wink:

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder