|
|
|
Datum: Tue, 23 Jun 2009 09:03:16 +0200,
Newsgroup: de.comp.os.ms-windows.misc
back
Umschalten auf verschiedene IP-Adressen
Hallo,
ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
unterwegs.
Gibt es eine Software oder eine andere Möglichkeit (Script oder
ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in einem
anderen Netz eine andere feste IP und in wieder anderen Netzen eine per
DHCP zugewiesene IP.
Mit freundlichen Grüßen
Susann
Datum: Tue, 23 Jun 2009 09:03:16 +0200
Autor: Susann Markward
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward schrieb:
Hallo Susanne,
> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
Löhnware:
http://www.netswitcher.com/
MultiPlugMate, auch deutsch
http://www.gslantern.com/mpm/index.html
http://home.arcor.de/groschh/software/ipprofiler/index.htm
Freeware:
http://code.google.com/p/netprofiles/
http://www.mobilenetswitch.com/
Freeware nichtkommerziell, pro: 15 Euro
http://www.netsetman.com
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Datum: Tue, 23 Jun 2009 09:30:12 +0200
Autor: Ralf Breuer
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward schrieb:
> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
Die c't hat vor längerer Zeit dazu mal eine Anleitung zum Einrichten
mehrerer Netzwerkverbindungen und passende Skripte zum Umschalten zwischen
selbigen veröffentlicht - gerade für Notebooks gedacht.
Ich weiß leider nicht mehr, wann das war. Vielleicht liefert die
Artiikelsuche bei heise.de was? Das betreffeende Heft kann man dann für
kleines Geld nachbestellen.
Andi
--
"Es sind seelisch kranke Menschen mit starken Komplexen, die zu Recht die
Angst haben, ihre Postings seien dummes Gelabere, und die deshalb ihren
Namen und vermeintlichen guten Ruf durch die Verwendung eines Pseudonyms
schützen wollen." [Werner Arts]
Datum: Tue, 23 Jun 2009 10:00:18 +0200
Autor: Andreas Viehrig
|
Re: Umschalten auf verschiedene IP-Adressen
Hi,
On 23 Jun., 09:03, Susann Markward
wrote:
> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
Eine solche Software liegt vielen Notebooks bereits bei. Vielleicht
durchforstest Du mal die mitgelieferten Datenträger und das
Supportangebot des Herstellers Deines Notebooks.
Michael
Datum: Tue, 23 Jun 2009 01:56:57 -0700 (PDT)
Autor: Michael Paul
|
Re: Umschalten auf verschiedene IP-Adressen
Hallo,
On Tue, 23 Jun 2009 09:30:12 +0200, "Ralf Breuer" wrote:
>Susann Markward schrieb:
>> Gibt es eine Software oder eine andere Möglichkeit (Script oder
>> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
>
> Löhnware:
[...]
sorry, wenn ich auf den Zug aufspringe und selbst suchen sollte. Aber
wahrscheinlich habe ich Tomaten auf den Augen!?
Ich habe mir die Beschreibung der vorgeschlagenen Tools mal
angeschaut. Nachteil scheint IMHO zu sein, dass ein Wechsel immer
manuell durch explizietes Aktivieren eines Profils erfolgen muss?!
Als ich noch ein IBM/Lenovo NB hatte, lief dort das IBM Tool "Access
Connection Manager". Dieses merkte automatisch "wo" man sich befand
und aktivierte das entsprechende Profil.
Nun bin ich auf einem HP Compaq NB und das IBM Tool verweigert
natürlich hier den Dienst ;-), aber HP scheint nichts equivalentes
anzubieten, noch nicht mal was an obige Tools herankommt?
--
DuG
Oliver
Datum: Tue, 23 Jun 2009 11:10:53 +0200
Autor: Oliver Doll
|
Re: Umschalten auf verschiedene IP-Adressen
Oliver Doll schrieb:
> Ich habe mir die Beschreibung der vorgeschlagenen Tools mal
> angeschaut. Nachteil scheint IMHO zu sein, dass ein Wechsel immer
> manuell durch explizietes Aktivieren eines Profils erfolgen muss?!
Richtig.
> Als ich noch ein IBM/Lenovo NB hatte, lief dort das IBM Tool "Access
> Connection Manager". Dieses merkte automatisch "wo" man sich befand
> und aktivierte das entsprechende Profil.
Deshalb sind Lenovo-NBs im Auslieferungszustand unbenutzbar langsam, weil
für alles und jedes ein Helferlein im Hintergrund werkelt ;-)
> Nun bin ich auf einem HP Compaq NB und das IBM Tool verweigert
> natürlich hier den Dienst ;-), aber HP scheint nichts equivalentes
> anzubieten, noch nicht mal was an obige Tools herankommt?
Warum auch? Es gibt doch genügend Alternativen.
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Datum: Tue, 23 Jun 2009 13:03:58 +0200
Autor: Ralf Breuer
|
Re: Umschalten auf verschiedene IP-Adressen
On Tue, 23 Jun 2009 13:03:58 +0200, "Ralf Breuer" wrote:
>Oliver Doll schrieb:
>> Dieses merkte automatisch "wo" man sich befand und aktivierte das entsprechende Profil.
>
> Deshalb sind Lenovo-NBs im Auslieferungszustand unbenutzbar langsam, weil
> für alles und jedes ein Helferlein im Hintergrund werkelt ;-)
stimmt, erst mal alles runter was man so nicht braucht und ansonsten
ist natürlich auch autoruns dein Freund ;-)
>> HP scheint nichts equivalentes anzubieten, noch nicht mal was an obige Tools
>> herankommt?
>
>Warum auch? Es gibt doch genügend Alternativen.
jau, wenn's tatsäschlich nicht mehr leistet. Wie gesagt: Das Access
Connections switchte halt autonom - das war sehr praktisch, da man
sich u.U. ja noch gar nicht am DC angemeldet hatte, bzw. noch gar
nicht konnte ohne korrekte NW-Settings.
--
DuG
Oliver
Datum: Tue, 23 Jun 2009 13:58:10 +0200
Autor: Oliver Doll
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward typed:
> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
>
> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in
> einem anderen Netz eine andere feste IP und in wieder anderen Netzen
> eine per DHCP zugewiesene IP.
Es könnte vielleicht ein Script anhand der Fehlermeldungen in der
Ereignisanzeige gestrickt werden. Ansonsten gibt es zwei einfache
Systemmöglichkeiten unter XP. Um eine Netzwerk-Konfiguration zu
speicnern, kannst Du diesen Befehl benutzen:
netsh interface ip dump > Netzwerk.cfg
Es handelt sich dabei ganz einfach um Textdateien, die mit einem
beliebigen Editor auch darstellbar sind. Willst Du diese Konfiguraion
wieder laden, gibst Du diesen Befehl ein:
netsh -f Netzwerk.cfg
Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
Skript veröffentlicht, das zwischen DHCP und festen Adressen
umzuschalten vermag:
MID: <news:4a2683ee$0$31337$9b4e6d93@newsspool4.arcor-online.net>
http://groups.google.com/group/de.comp.os.ms-windows.netzwerke/msg/da6f4b3512ec8886
Vielleicht kannst Du es ja an Deine Bedürfnisse anpassen. Ein solches
Skript könnte natürlich auch vollständig automatisiert werden, das
erfordert jedoch genauere Informationen.
--
ЯR
Datum: Tue, 23 Jun 2009 18:49:01 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Hallo Susann,
Susann Markward wrote:
> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in
> einem anderen Netz eine andere feste IP und in wieder anderen
> Netzen eine per DHCP zugewiesene IP.
Zumindest zwei Netzwerke gehen IMHO ohne Probleme, wenn kein DHCP
gefunden wurde, wird eine alternative (feste) IP verwendet...
Ciao Thomas
Datum: 23 Jun 2009 19:58:00 +0200
Autor: Thomas Niering
|
Re: Umschalten auf verschiedene IP-Adressen
Hallo,
*Rüdiger Rösler* schrieb am 23.06.2009 18:49:
> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
> Skript veröffentlicht, das zwischen DHCP und festen Adressen
> umzuschalten vermag ...
Danke das funktioniert vortrefflich! ;-)
Ich habe mir einfach zwei Verknüpfungen auf meinen Desktop gelegt. Die
eine mit dem Ziel:
cscript.exe "C:\<Pfad>\AssIPAdd.vbs" DHCP
und die andere mit dem Ziel:
cscript.exe "C:\<Pfad>\AssIPAdd.vbs" 192.168.x.y 192.168.x.z
Dazu noch die beiden Verknüpfungen mit einem neuen Icon von
<www.vistaicons.com> versehen und voilà , es sieht auch noch schön aus.
Datum: Wed, 24 Jun 2009 14:50:17 +0200
Autor: Susann Markward
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward typed:
> Danke das funktioniert vortrefflich! ;-)
Es ist ein bisserle Spaghettikode, so müsste ein Teil eigentlich so
lauten:
If wmiNICcfg.EnableDHCP = 0 Then
blnWait = True
WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
Else
WScript.Echo "Aktivierung von DHCP ist gescheitert."
End If
Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn es
auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz spontan
geschrieben, weil ich gerade Zeit und Lust dazu hatte und hatte nicht
viel Zeit, es auf Fehler zu prüfen.
--
ЯR
Datum: Wed, 24 Jun 2009 19:04:20 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward wrote:
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
Ich habe mein Notebook einfach auf DCHP eingestellt. Warum das
funktioniert, siehe unten.
> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in einem
> anderen Netz eine andere feste IP und in wieder anderen Netzen eine per
> DHCP zugewiesene IP.
Gibt es am Arbeitsplatz keinen DHCP-Server? Wenn doch, kann der einem
Client immer wieder die gleiche IP zuweisen, das muss nicht zwangsläufig
dynamisch passieren..
--
CU Christoph Maercker.
Datum: Thu, 25 Jun 2009 09:06:37 +0200
Autor: Christoph Maercker
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward typed:
> Danke das funktioniert vortrefflich! ;-)
Da ich jetzt eine neue Kundin habe, gibt es auch ein Update. Und weil Du
Dich so nett bedankt hast, was mich sehr gefreut hat. Das Skript ist
jetzt fehlerfrei, eine eher ungewöhnliche Eigenschaft im
Software-Bereich! ;-) Allerdings muss jetzt zur Änderung der IP-Adressen
die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
Netzwerkadaptern eine separate Zuweisung vornehmen zu können. Dafür ist
auch wesentlich umfangreicher geworden.
'########################### AssIPAdd.vbs #############################
' von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl: (<http://de.wikipedia.org/wiki/MAC-Adresse>)
' CScript AssIPAdd.vbs <MAC-Adr.> <IP-Adr. NIC> <IP-Adr. Gateway>
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0 192.168.1.141 192.168.1.100
' Alternativ kann ohne weiteren Parameter DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.
Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration where "
Dim wmi, wmiNICs, wmiNIC, str, strIPAdd, strIPGW, strSubnetMask
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
"!\\.\root\cimv2")
On Error Resume Next
Set wmiNICs = wmi.ExecQuery(NICCFG & "IPEnabled = True and " & _
"MACAddress = '" & WScript.Arguments(0) & "'")
If Err <> 0 Then
WScript.Echo "Fehler " & Err.Number & ": " & Err.Description
WScript.Quit(WScript.Sleep(30000))
End If
On Error GoTo 0
If WScript.Arguments.Count = 3 Then
If IsNumeric(WScript.Arguments(1)) Then
strIPAdd = Array(WScript.Arguments(1)) ' z. B. "192.168.1.141"
End If
If IsNumeric(WScript.Arguments(2)) Then
strIPGW = Array(WScript.Arguments(2)) ' z. B. "192.168.1.100"
End If
strSubnetMask = Array("255.255.255.0")
For Each wmiNIC In wmiNICs
If wmiNIC.DHCPEnabled Then
str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
Select Case wmiNIC.ReleaseDHCPLease
Case 0:
Case 1: str = str & "Windows-Neustart erforderlich."
Case Else
str = "DHCP-Zuweisung kann nicht aufgehoben werden."
End Select
WScript.Echo str & vbCRLF
End If
If wmiNIC.EnableStatic(strIPAdd, strSubnetMask) = 0 Then
WScript.Echo "Statische IP-Adresse wurde zugewiesen."
Else
WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
"misslungen."
End If
If wmiNIC.SetGateways(strIPGW, Array(1)) = 0 Then
WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
Else
WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
"gescheitert."
End If
Next
Else
If AutoStartSvc("DHCP") Then
For Each wmiNIC In wmiNICs
If wmiNIC.DHCPEnabled Then
WScript.Echo "DHCP war schon aktiviert."
WScript.Echo "Zuweisung wird erneuert!"
wmiNIC.RenewDHCPLease
Exit For
End If
If wmiNIC.EnableDHCP = 0 Then
WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
Else
WScript.Echo "Aktivierung von DHCP ist gescheitert."
End If
Next
End If
End If
PingTorweg
With CreateObject("WScript.Shell")
With .Exec("ipconfig /all")
Do Until .StdOut.AtEndOfStream
WScript.StdOut.Write .StdOut.ReadAll
Loop
End With
.PopUp "Konfiguration abgeschlossen.", 60, _
"Netzwerkadapter", vbInformation Or vbSystemModal
End With
Function AutoStartSvc(strDienst)
Dim wmiSvc, wmiServ
For Each wmiSvc In SelectService(strDienst)
If wmiSvc.StartMode <> "Auto" Then
If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
WScript.Echo "Startmodus des " & strDienst & _
"-Dienstes konnte nicht geändert werden."
Else
For Each wmiServ In SelectService(strDienst)
Do
WScript.Echo wmiServ.Name & ": " & _
wmiServ.StartMode
WScript.Sleep 1000
Loop While wmiServ.StartMode <> "Auto"
WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
" automatischen Start gesetzt."
Next
End If
End If
If Not(wmiSvc.Started) Then
If wmiSvc.StartService <> 0 Then
WScript.Echo "Der Dienst " & strDienst & " kann " & _
"nicht gestartet werden."
Else
For Each wmiServ In SelectService(strDienst)
Do
WScript.Echo wmiServ.Name & ": " & _
wmiServ.State
WScript.Sleep 1000
Loop Until wmiServ.Started
Next
WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
End If
End If
Next
For Each wmiSvc In SelectService(strDienst)
AutoStartSvc = wmiSvc.Started
Next
End Function
Function SelectService(strSvc)
Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
" where Name = 'DHCP'")
End Function
Sub PingTorweg
Dim wmiNIC, i, x
Do
For Each wmiNIC In wmi.ExecQuery(NICCFG & "IPEnabled = True")
If Not(IsNull(wmiNIC.DefaultIPGateway)) Then
For i = 0 To UBound(wmiNIC.DefaultIPGateway)
If wmiNIC.DefaultIPGateway(i) > 0 Then
Do
x = x + 1
If x > 5 Then
WScript.Echo "Gateway nicht erreichbar."
Exit Do
End If
Loop Until Ping(wmiNIC.DefaultIPGateway(i))
Exit Sub
End If
Next
End If
Next
WScript.Sleep 1000
Loop
End Sub
Function Ping(strIPAdd)
Dim wmiPing, i, blnPong, blnFirst
For i = 0 To 2
For Each wmiPing In wmi.ExecQuery("select * from " & _
"Win32_PingStatus where Address = '" & strIPAdd & "'")
If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
blnPong = CBool(wmiPing.StatusCode = 0)
If Not(blnPong) Then
WScript.Echo GetError(wmiPing.StatusCode) & vbCRLF
End If
Next
WScript.Sleep 1000
Next
Ping = blnPong
End Function
Function GetError(intNumber)
Dim arr
arr = Array("Success", "Buffer Too Small", "Destination Net " & _
"Unreachable", "Destination Host Unreachable", _
"Destination Protocol Unreachable", "Destination Port " & _
"Unreachable", "No Resources", "Bad Option", "Hardware " & _
"Error", "Packet Too Big", "Request Timed Out", _
"Bad Request", "Bad Route", "TimeToLive Expired Transit", _
"TimeToLive Expired Reassembly", "Parameter Problem", _
"Source Quench", "Option Too Big", "Bad Destination")
ReDim Preserve arr(50)
arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"
GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
arr(intNumber - 11000)
End Function
Datum: Thu, 25 Jun 2009 20:00:04 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Rüdiger Rösler wrote:
> Allerdings muss jetzt zur Änderung der IP-Adressen
>die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
>Netzwerkadaptern eine separate Zuweisung vornehmen zu können.
Noch ein Verbesserungsvorschlag: die MAC-Adresse sollte als 3.
Parameter optional sein, d.h. wenn nur eine Netzwerkkarte gefunden
wird, wird nur diese geändert. Wenn mehrere vorhanden sind, könnte
z.B. ein Skriptabbruch erfolgen (oder eine Nachfrage).
Und wenn noch ein Mini-GUI für die 2-3 Parameter integriert wäre, wäre
es perfekt...
Thorsten
Datum: Fri, 26 Jun 2009 17:21:52 +0200
Autor: Thorsten Albrecht
|
Re: Umschalten auf verschiedene IP-Adressen
Thorsten Albrecht typed:
> Rüdiger Rösler wrote:
>
>> Allerdings muss jetzt zur Änderung der IP-Adressen
>>die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
>>Netzwerkadaptern eine separate Zuweisung vornehmen zu können.
>
> Noch ein Verbesserungsvorschlag: die MAC-Adresse sollte als 3.
> Parameter optional sein, d.h. wenn nur eine Netzwerkkarte gefunden
> wird, wird nur diese geändert. Wenn mehrere vorhanden sind, könnte
> z.B. ein Skriptabbruch erfolgen (oder eine Nachfrage).
>
> Und wenn noch ein Mini-GUI für die 2-3 Parameter integriert wäre, wäre
> es perfekt...
Der erste Wunsch ist schon erledigt. Allerdings reicht es mir nun. Das
Wetter ist einfach zu schön! :-) Dieses Skript kann für Windows auch so
umgebaut werden, um es Remote zur Administration zu verwenden:
'########################### AssIPAdd.vbs #############################
' von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl: (<http://de.wikipedia.org/wiki/MAC-Adresse>)
' CScript AssIPAdd.vbs <MAC-Adr.> <IP-Adr. NIC> <IP-Adr. Gateway>
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0 192.168.1.141 192.168.1.100
' Alternativ kann ohne weiteren Parameter DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0
' Wird die MAC-Adresse nicht angegeben, so wird der erste verfügbare
' Netzwerk-Adapter verwendet, bei dem das IP aktiviert ist.
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.
' Einige Beispiele bei Aufruf mit CScript:
' AssIPAdd.vbs 00-07-E9-BB-FE-A0 192.168.0.141 192.168.0.100
' AssIPAdd.vbs ' DHCP für die erste verfügbare NIC wird aktiviert
' AssIPAdd.vbs 00:07:E9:BB:FE:A0 ' DHCP für NIC wird aktiviert
Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration"
Dim wmi, wmiNICs, wmiNIC, strMAC
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
"!\\.\root\cimv2")
WScript.Echo
If WScript.Arguments.Count = 0 Then
For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled = True")
If Not(IsNull(wmiNIC.MACAddress)) Then
strMAC = wmiNIC.MACAddress ' 1. Adapter wird verwendet
Exit For
End If
Next
If IsEmpty(strMAC) Then WScript.Quit
Else
strMAC = WScript.Arguments(0)
End If
strMAC = Join(Split(strMAC, Mid(strMAC, 3, 1)), ":")
Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True " & _
"and MACAddress = '" & strMAC & "'")
If WScript.Arguments.Count = 3 Then
Call StaticEnable(WScript.Arguments, wmiNICs)
ElseIf AutoStartSvc("DHCP") Then
Call ActivateDHCP(wmiNICs)
End If
Call PingTorweg(strMAC)
With CreateObject("WScript.Shell")
With .Exec("ipconfig /all")
Do Until .StdOut.AtEndOfStream
WScript.StdOut.Write .StdOut.ReadAll
Loop
End With
.PopUp "Konfiguration für " & strMAC & " abgeschlossen.", 60, _
"Netzwerkadapter", vbInformation Or vbSystemModal
End With
Sub ActivateDHCP(ByRef wmiNICCfg)
Dim wmiNIC
For Each wmiNIC In wmiNICCfg
If wmiNIC.DHCPEnabled Then
WScript.Echo "DHCP war schon aktiviert, Zuweisung wird" & _
" jetzt erneuert!"
wmiNIC.RenewDHCPLease
Exit For
End If
If wmiNIC.EnableDHCP = 0 Then
WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
Else
WScript.Echo "Aktivierung von DHCP ist gescheitert."
End If
Next
End Sub
Sub StaticEnable(ByRef objArgs, ByRef wmiNICCfg)
Dim strIP(3), wmiNIC, str, i
For i = 1 To 2
If IsNumeric(objArgs(i)) Then
strIP(i-1) = Array(objArgs(i))
End If
Next
strIP(2) = Array("255.255.255.0")
For Each wmiNIC In wmiNICCfg
If wmiNIC.DHCPEnabled Then
str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
Select Case wmiNIC.ReleaseDHCPLease
Case 0:
Case 1: str = str & "Windows-Neustart erforderlich."
Case Else
str = "DHCP-Zuweisung kann nicht aufgehoben werden."
End Select
WScript.Echo str & vbCRLF
End If
If wmiNIC.EnableStatic(strIP(0), strIP(2)) = 0 Then
WScript.Echo "Statische IP-Adresse wurde zugewiesen."
Else
WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
"misslungen."
End If
If wmiNIC.SetGateways(strIP(1), Array(1)) = 0 Then
WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
Else
WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
"gescheitert."
End If
Next
End Sub
Function AutoStartSvc(strDienst)
Dim wmiSvc, wmiServ
For Each wmiSvc In SelectService(strDienst)
If wmiSvc.StartMode <> "Auto" Then
If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
WScript.Echo "Startmodus des " & strDienst & _
"-Dienstes konnte nicht geändert werden."
Else
For Each wmiServ In SelectService(strDienst)
Do While wmiServ.StartMode <> "Auto"
WScript.Echo wmiServ.Name & ": " & _
wmiServ.StartMode
WScript.Sleep 1000
Loop
WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
" automatischen Start gesetzt."
Next
End If
End If
If Not(wmiSvc.Started) Then
If wmiSvc.StartService <> 0 Then
WScript.Echo "Der Dienst " & strDienst & " kann " & _
"nicht gestartet werden."
Else
For Each wmiServ In SelectService(strDienst)
Do
WScript.Echo wmiServ.Name & ": " & _
wmiServ.State
WScript.Sleep 1000
Loop Until wmiServ.Started
Next
WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
End If
End If
Next
For Each wmiSvc In SelectService(strDienst)
AutoStartSvc = wmiSvc.Started
Next
End Function
Function SelectService(strSvc)
Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
" where Name = '" & strSvc & "'")
End Function
Sub PingTorweg(strMAC)
Dim wmiNIC, i, x
Do
For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled" & _
" = True and MACAddress = '" & strMAC & "'")
If IsNull(wmiNIC.DefaultIPGateway) Then Exit For
For i = 0 To UBound(wmiNIC.DefaultIPGateway)
Do Until Ping(wmiNIC.DefaultIPGateway(i))
If x >= 5 Then
WScript.Echo "Gateway ist nicht erreichbar."
Exit Do
End If
WScript.Sleep 1000
x = x + 1
Loop
Exit Do
Next
Next
WScript.Sleep 1000
Loop
End Sub
Function Ping(strIPAdd)
Dim wmiPing, blnPong
For Each wmiPing In wmi.ExecQuery("select * from " & _
"Win32_PingStatus where Address = '" & strIPAdd & "'")
If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
blnPong = CBool(wmiPing.StatusCode = 0)
If Not(blnPong) Then
WScript.Echo GetError(wmiPing.StatusCode) & vbCRLF
End If
Next
Ping = blnPong
End Function
Function GetError(intNumber)
Dim arr
arr = Array("Success", "Buffer Too Small", "Destination Net " & _
"Unreachable", "Destination Host Unreachable", _
"Destination Protocol Unreachable", "Destination Port " & _
"Unreachable", "No Resources", "Bad Option", "Hardware " & _
"Error", "Packet Too Big", "Request Timed Out", _
"Bad Request", "Bad Route", "TimeToLive Expired Transit", _
"TimeToLive Expired Reassembly", "Parameter Problem", _
"Source Quench", "Option Too Big", "Bad Destination")
ReDim Preserve arr(50)
arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"
GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
arr(intNumber - 11000)
End Function
'########################### AssIPAdd.vbs #############################
Datum: Fri, 26 Jun 2009 19:24:54 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Rüdiger Rösler wrote:
>Der erste Wunsch ist schon erledigt.
Herzlichen Dank!!
Thorsten
Datum: Tue, 30 Jun 2009 18:37:42 +0200
Autor: Thorsten Albrecht
|
Re: Umschalten auf verschiedene IP-Adressen
Thorsten Albrecht typed:
> Herzlichen Dank!!
Keine Ursache, Thorsten, ich habe die Lösung ja nicht veröffentlicht!!!
--
ЯR
Datum: Tue, 30 Jun 2009 23:51:36 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Am 24.06.2009, 19:04 Uhr, schrieb Rüdiger Rösler
:
> Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn es
> auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz spontan
> geschrieben, weil ich gerade Zeit und Lust dazu hatte und hatte nicht
> viel Zeit, es auf Fehler zu prüfen.
Hey, sag mal, Du Skripting-Guru:
- Wie kann man sich denn diese ganze kranke Syntax überhaupt merken?
- Wie komme ich denn an diese seltsamen Namen der ganzen Objekte, und
woher weiss ich, welches vorhandene Variablen-Ding was im System macht? Da
ist man doch jahrelang nur am Doku-Wälzen, oder?
- Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt; meine
Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss man denn
dazu installiert haben?
Respekt...
Ansgar
--
Mails an die angegebene Adresse erreichen mich - oder auch nicht.
Nützliche Adresse gibt's bei Bedarf!
Mail to the given address may or may not reach me - useful address will be
given when required!
Datum: Wed, 01 Jul 2009 14:27:02 +0200
Autor: Ansgar Strickerschmidt
|
Re: Umschalten auf verschiedene IP-Adressen
Ansgar Strickerschmidt typed:
> Am 24.06.2009, 19:04 Uhr, schrieb Rüdiger Rösler
> :
>
>> Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn
>> es auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz
>> spontan geschrieben, weil ich gerade Zeit und Lust dazu hatte und
>> hatte nicht viel Zeit, es auf Fehler zu prüfen.
>
> Hey, sag mal, Du Skripting-Guru:
>
> - Wie kann man sich denn diese ganze kranke Syntax überhaupt merken?
Was heiÃt merken? Ich habe eine Online-Hilfe. Meine Spiegelneuronen sind
dafür zu kostbar. Logisch Denken sollte man allerdings ein wenig können.
> - Wie komme ich denn an diese seltsamen Namen der ganzen Objekte, und
> woher weiss ich, welches vorhandene Variablen-Ding was im System
> macht? Da ist man doch jahrelang nur am Doku-Wälzen, oder?
Die WMI wurde nicht unter Windows entwickelt, sie ist jedoch im SDK
ziemlich gut dokumentiert.
> - Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt;
> meine Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss
> man denn dazu installiert haben?
Nix. Das ist der Grund, warum ich diese kranke Syntax benutze. Sie ist
Bestandteil des OS. Man gewöhnt sich an allet. Computer dienen in den
allermeisten Fällen zur Bewältigung wiederkehrender Aufgaben, sonst
machen sie, was sie wollen.
>
> Respekt...
Mit Speck fängt man Mäuse ... ;-)
--
ЯR
Datum: Fri, 3 Jul 2009 07:00:02 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Am 03.07.2009, 07:00 Uhr, schrieb Rüdiger Rösler
:
>> - Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt;
>> meine Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss
>> man denn dazu installiert haben?
>
> Nix. Das ist der Grund, warum ich diese kranke Syntax benutze. Sie ist
> Bestandteil des OS. Man gewöhnt sich an allet. Computer dienen in den
> allermeisten Fällen zur Bewältigung wiederkehrender Aufgaben, sonst
> machen sie, was sie wollen.
Naja, das kommt jetzt drauf an, was man unter "wiederkehrende Aufgabe"
genau versteht.
"Entwerfe einen Schaltplan" ist bspw. für einen Hardware-Entwickler sicher
eine regelmäßig wiederkehrende Aufgabe - allerdings eine, die sich im
Gegensatz zu "Sichere täglich Ordner X, Y und Z von Laufwerk C:" nicht
unbedingt skripten lässt ;)
Ansgar
--
Mails an die angegebene Adresse erreichen mich - oder auch nicht.
Nützliche Adresse gibt's bei Bedarf!
Mail to the given address may or may not reach me - useful address will be
given when required!
Datum: Fri, 03 Jul 2009 09:29:04 +0200
Autor: Ansgar Strickerschmidt
|
Re: Umschalten auf verschiedene IP-Adressen
Hallo,
*Rüdiger Rösler* schrieb am 23.06.2009 18:49:
> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
> Skript veröffentlicht, das zwischen DHCP und festen Adressen
> umzuschalten vermag:
Ich muss doch noch einmal nachhaken. SRY
Ich war längere Zeit nun Offline, bzw. zu Hause (wegen Urlaub) in meinem
privaten WLAN. Jetzt wieder zurück auf Arbeit habe ich Dein prima Script
ausgeführt, konnte aber nicht ins Internet. Nach einer kurzen Analyse
habe ich den Fehler gefunden. Das Script setzt leider die DNS-Server
(weder primär noch sekundär) nicht. Dort stand einfach nichts drin.
Kann man das evtl. noch nachrüsten?
Datum: Fri, 14 Aug 2009 15:21:23 +0200
Autor: Susann Markward
|
Re: Umschalten auf verschiedene IP-Adressen
Susann Markward typed:
>> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
>> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
>> Skript veröffentlicht, das zwischen DHCP und festen Adressen
>> umzuschalten vermag:
>
> Ich muss doch noch einmal nachhaken. SRY
>
> Ich war längere Zeit nun Offline, bzw. zu Hause (wegen Urlaub) in
> meinem privaten WLAN. Jetzt wieder zurück auf Arbeit habe ich Dein
> prima Script ausgeführt, konnte aber nicht ins Internet. Nach einer
> kurzen Analyse habe ich den Fehler gefunden. Das Script setzt leider
> die DNS-Server (weder primär noch sekundär) nicht. Dort stand einfach
> nichts drin.
>
> Kann man das evtl. noch nachrüsten?
Anspruchsvolle Kunden hier! :-) Ich habe vor einiger Zeit ein Skript zum
Setzen der DNS-Server veröffentlicht:
http://groups.google.com/group/de.comp.hardware.netzwerke.misc/browse_frm/thread/93be2c5c7fad2caa/834246b84b928c62?hl=de&q=#834246b84b928c62
Message-ID: <4a3ba5a7$0$31879$9b4e6d93@newsspool3.arcor-online.net>
Auf die Schnelle habe ich beide Skripte integriert, ist halt eben ein
wenisch Spaghetti-like:
'########################### AssIPAdd.vbs #############################
' von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl (CScript.exe ist zur Ausführung notwendig):
' CScript AssIPAdd.vbs <IP NIC> <IP Gateway> /DNS <DNS-Server> <MAC>
' CScript AssIPAdd.vbs 192.168.1.141 192.168.1.100 /DNS 208.67.222.222
' 194.25.2.129 208.67.220.220 00:07:E9:BB:FE:A0
' Alternativ kann DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs DHCP /DNS <DNS-Server> <MAC>
' CScript AssIPAdd.vbs DHCP /DNS 208.67.222.222 194.25.2.129
' 208.67.220.220 00:07:E9:BB:FE:A0
' Ist nur ein IP-Netzwerk-Adapter verfügbar, so ist die Angabe der
' MAC-Adresse nicht erforderlich. Bei mehreren NICs muss die MAC-
' Adresse angegeben werden. Werden keine DNS-Server angegeben, so
' erfolgt die Zuweisung durch DHCP, was natürlich statisch nicht geht.
' Es können beliebig viele DNS-Server angegeben werden.
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.
Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration"
Dim wmi, wmiNICs, wmiNIC, strMAC, strVerb, blnNIC, i, j
Dim wshArgs, blnCheck, arrDNSServers(), k, blnDHCP
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
"!\\.\root\cimv2")
Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True")
Set wshArgs = WScript.Arguments
If wmiNICs.Count > 1 And wshArgs.Count > 1 Then
strMAC = wshArgs(wshArgs.Count - 1)
strMAC = UCase(Replace(strMAC, Mid(strMAC, 3, 1), ":"))
For Each wmiNIC In wmiNICs
If Not(IsNull(wmiNIC.MACAddress)) Then
If wmiNIC.MACAddress = strMAC Then blnNIC = True
End If
If blnNIC Then Exit For
Next
ElseIf wmiNICs.Count = 1 Then
For Each wmiNIC In wmiNICs
If Not(IsNull(wmiNIC.MACAddress)) Then
strMAC = wmiNIC.MACAddress
Exit For
End If
Next
End If
If Not(blnNIC) And IsEmpty(strMAC) Then
WScript.Echo "Es wurde kein entsprechender Netzwerk-Adapter" & _
" gefunden!"
WScript.Quit
End If
Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True " & _
"and MACAddress = '" & strMAC & "'")
strVerb = GetNICDescription(strMAC)
If InStr(1, wshArgs(0), "dhcp", vbTextCompare) > 0 Then
If AutoStartSvc("dhcp") Then blnDHCP = ActivateDHCP(wmiNICs)
Else
Call StaticEnable(wshArgs, wmiNICs)
End If
Call PingTorweg(strMAC)
For k = 0 To wshArgs.Count - 1
If InStr(1, wshArgs(k), "dns", vbTextCompare) > 0 Then
blnCheck = True
For j = k + 1 To wshArgs.Count - 1 + CInt(blnNIC)
If IsNumeric(wshArgs(j)) Then
If CheckServer(wshArgs(j), blnCheck) Then
WScript.Echo "Server " & wshArgs(j) & _
" ist erreichbar."
ReDim Preserve arrDNSServers(i)
arrDNSServers(i) = wshArgs(j)
i = i + 1
Else
WScript.Echo "Server " & wshArgs(j) & _
" ist NICHT erreichbar."
End If
blnCheck = False
End If
Next
End If
Next
If i > 0 Then
For Each wmiNIC In wmiNICs
wmiNIC.SetDNSServerSearchOrder(arrDNSServers)
Next
End If
With CreateObject("WScript.Shell")
With .Exec("ipconfig /all")
Do Until .StdOut.AtEndOfStream
WScript.StdOut.Write .StdOut.ReadAll
Loop
End With
.PopUp "Konfiguration für " & strVerb & " abgeschlossen.", 60, _
strVerb, vbInformation Or vbSystemModal
End With
Function GetNICDescription(strMAC)
Dim wmiNIC, strConn
For Each wmiNIC In wmi.ExecQuery("Select * from Win32_Network" & _
"Adapter where MACAddress = '" & strMAC & "'")
If IsNull(wmiNIC.NetConnectionID) Then Exit For
strConn = wmiNIC.NetConnectionID
WScript.Echo vbCRLF & wmiNIC.ProductName & ":" & vbCRLF & _
wmiNIC.AdapterType & " über """ & strConn & """" & vbCRLF
Next
GetNICDescription = strConn
End Function
Function ActivateDHCP(ByRef wmiNICCfg)
Dim wmiNIC, blnSucceed
For Each wmiNIC In wmiNICCfg
If wmiNIC.DHCPEnabled Then
WScript.Echo "DHCP war schon aktiviert, die Zuweisung " & _
"wird jetzt erneuert!"
wmiNIC.RenewDHCPLease
Exit For
Else
wmiNIC.SetDNSServerSearchOrder
End If
If wmiNIC.EnableDHCP = 0 Then
WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
blnSucceed = True
Else
WScript.Echo "Aktivierung von DHCP ist gescheitert."
End If
Next
ActivateDHCP = blnSucceed
End Function
Sub StaticEnable(ByRef objArgs, ByRef wmiNICCfg)
Dim strIP(3), wmiNIC, str, i
For i = 0 To 1
If IsNumeric(objArgs(i)) Then
strIP(i) = Array(objArgs(i))
End If
Next
strIP(2) = Array("255.255.255.0")
For Each wmiNIC In wmiNICCfg
If wmiNIC.DHCPEnabled Then
str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
Select Case wmiNIC.ReleaseDHCPLease
Case 0:
Case 1: str = str & "Windows-Neustart erforderlich."
Case Else
str = "DHCP-Zuweisung kann nicht aufgehoben werden."
End Select
WScript.Echo str & vbCRLF
End If
If wmiNIC.EnableStatic(strIP(0), strIP(2)) = 0 Then
WScript.Echo "Statische IP-Adresse wurde zugewiesen."
Else
WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
"misslungen."
End If
If wmiNIC.SetGateways(strIP(1), Array(1)) = 0 Then
WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
Else
WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
"gescheitert."
End If
Next
End Sub
Function AutoStartSvc(strDienst)
Dim wmiSvc, wmiServ
For Each wmiSvc In SelectService(strDienst)
If wmiSvc.StartMode <> "Auto" Then
If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
WScript.Echo "Startmodus des " & wmiSvc.Name & _
"-Dienstes konnte nicht geändert werden."
Else
For Each wmiServ In SelectService(strDienst)
Do While wmiServ.StartMode <> "Auto"
WScript.Echo wmiServ.Name & ": " & _
wmiServ.StartMode
WScript.Sleep 1000
Loop
WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
" automatischen Start gesetzt."
Next
End If
End If
If Not(wmiSvc.Started) Then
If wmiSvc.StartService <> 0 Then
WScript.Echo "Der Dienst " & wmiSvc.Name & _
" kann nicht gestartet werden."
Else
For Each wmiServ In SelectService(strDienst)
Do
WScript.Echo wmiServ.Name & ": " & _
wmiServ.State
WScript.Sleep 1000
Loop Until wmiServ.Started
Next
WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
End If
End If
Next
For Each wmiSvc In SelectService(strDienst)
AutoStartSvc = wmiSvc.Started
Next
End Function
Function SelectService(strSvc)
Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
" where Name = '" & strSvc & "'")
End Function
Sub PingTorweg(strMAC)
Dim wmiNIC, i, x
Do
For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled" & _
" = True and MACAddress = '" & strMAC & "'")
If IsNull(wmiNIC.DefaultIPGateway) Then Exit For
For i = 0 To UBound(wmiNIC.DefaultIPGateway)
Do Until Ping(wmiNIC.DefaultIPGateway(i))
If x >= 5 Then
WScript.Echo "Gateway ist nicht erreichbar."
Exit Do
End If
WScript.Sleep 1000
x = x + 1
Loop
Exit Do
Next
Next
WScript.Sleep 1000
Loop
End Sub
Function CheckServer(strTarget, blnRetry)
Dim wmiPing, i, blnPong, blnFirst
If Not(blnRetry) Then
WScript.Echo vbCRLF & "Teste Server " & strTarget & _
" auf Erreichbarkeit."
End If
For i = 0 To 2
For Each wmiPing In wmi.ExecQuery("select * from " & _
"Win32_PingStatus where ResolveAddressNames = True" & _
" and Address = '" & strTarget & "'")
If blnRetry Then
WScript.Sleep 1000 ' wenn der Router offline ist
CheckServer = CheckServer(strTarget, False)
Exit Function
End If
If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
blnPong = CBool(wmiPing.StatusCode = 0)
If Not(blnFirst) Then
blnFirst = True
If Not(blnPong) Then
WScript.Echo GetError(wmiPing.StatusCode)
End If
Wscript.Echo vbCRLF & wmiPing.Address & " [" & _
wmiPing.ProtocolAddressResolved & "] erwidert ICMP:"
WScript.StdOut.Write "Antwortzeiten: "
End If
If blnPong Then
WScript.StdOut.Write wmiPing.ResponseTime & " "
Else
WScript.StdOut.Write " * "
End If
Next
WScript.Sleep 200
Next
If blnPong Then WScript.StdOut.Write " ms"
WScript.Echo
CheckServer = blnPong
End Function
Function Ping(strIPAdd)
Dim wmiPing, blnPong
For Each wmiPing In wmi.ExecQuery("select * from " & _
"Win32_PingStatus where Address = '" & strIPAdd & "'")
If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
blnPong = CBool(wmiPing.StatusCode = 0)
If Not(blnPong) Then
WScript.Echo GetError(wmiPing.StatusCode)
End If
Next
Ping = blnPong
End Function
Function GetError(intNumber)
Dim arr
arr = Array("Success", "Buffer Too Small", "Destination Net " & _
"Unreachable", "Destination Host Unreachable", _
"Destination Protocol Unreachable", "Destination Port " & _
"Unreachable", "No Resources", "Bad Option", "Hardware " & _
"Error", "Packet Too Big", "Request Timed Out", _
"Bad Request", "Bad Route", "TimeToLive Expired Transit", _
"TimeToLive Expired Reassembly", "Parameter Problem", _
"Source Quench", "Option Too Big", "Bad Destination")
ReDim Preserve arr(50)
arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"
GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
arr(intNumber - 11000) & vbCRLF
End Function
'########################### AssIPAdd.vbs #############################
Selbstverständlich wird keine Gewährleistung für das korrekte
Funktionieren des Skripts auf fremden Rechnern übernommen.
--
ЯR
Datum: Sat, 15 Aug 2009 15:43:01 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Rüdiger Rösler schrieb:
> '########################### AssIPAdd.vbs #############################
> ' von h.r.roesler
> ' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
> ' Einschalten von DHCP.
netsh.exe set address
> ' Es können beliebig viele DNS-Server angegeben werden.
netsh.exe set,add,del dns
Siehe auch http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx
mfG Paul
Datum: Mon, 17 Aug 2009 19:41:16 +0200
Autor: Paul Muster
|
Re: Umschalten auf verschiedene IP-Adressen
Paul Muster typed:
> netsh.exe set address
Jau, das wäre viel einfacher, macht aber nicht soviel Spaà und ist nicht
so flexibel. lol Es sollte jedoch noch ein *interface* *ip* vor set
eingesetzt werden, damit es auch funktioniert:
netsh interface ip set address
| C:\>netsh interface ip show ipaddress
|
| Der Routing- und RAS-Dienst wird auf dem lokalen Computer zurzeit
| nicht ausgeführt. Führen Sie "net start remoteaccess" aus, um den
| Dienst zu starten.
Ich bin leider etwas misstrauisch gegenüber dem Routing- und RAS-Dienst.
> netsh.exe set,add,del dns
netsh interface ip set, add, del dns
Die Syntax dieses Befehls ist etwas gewöhnungsbedürftig und ist nicht so
gut dokumentiert.
> Siehe auch
> http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx
Da steht's auch:
hh.exe ms-its:ntcmds.chm::/netsh_int_ip.htm
--
ЯR
Datum: Mon, 17 Aug 2009 21:11:17 +0200
Autor: Rüdiger Rösler
|
Re: Umschalten auf verschiedene IP-Adressen
Rüdiger Rösler schrieb:
> Paul Muster typed:
>> netsh.exe set address
>
> Jau, das wäre viel einfacher, macht aber nicht soviel Spaà und ist nicht
> so flexibel. lol Es sollte jedoch noch ein *interface* *ip* vor set
> eingesetzt werden, damit es auch funktioniert:
> netsh interface ip set address
Ah, ok. Hatte keine Windows-Installation zum Testen da.
> | C:\>netsh interface ip show ipaddress
> |
> | Der Routing- und RAS-Dienst wird auf dem lokalen Computer zurzeit
> | nicht ausgeführt. Führen Sie "net start remoteaccess" aus, um den
> | Dienst zu starten.
>
> Ich bin leider etwas misstrauisch gegenüber dem Routing- und RAS-Dienst.
Aha. "Ich vertraue meinem linken Hinterrad nicht." Naja, jeder, wie er mag.
>> netsh.exe set,add,del dns
>
> netsh interface ip set, add, del dns
>
> Die Syntax dieses Befehls ist etwas gewöhnungsbedürftig und ist nicht so
> gut dokumentiert.
Nix gegen dein Skript, aber die VB-Syntax ist fünfmal
gewöhnungsbedürftiger. Bevor ist mich mit solchen Dingen wie
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
"!\\.\root\cimv2")
auseinandersetze (und das muss ich, wenn ich dein Skript verwenden
wollte, weil ich keine unverstandenen fremden Skripte auf meinen Kisten
laufen lasse), habe ich die komplette Syntax von sämtlichen Parametern
von netsh.exe durch. (Nein, mich interessiert nicht wirklich, was deine
Zeile tut, brauchst du also nicht erklären.)
>> Siehe auch
>> http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx
>
> Da steht's auch:
> hh.exe ms-its:ntcmds.chm::/netsh_int_ip.htm
Na wunderbar.
mfG Paul
Datum: Tue, 18 Aug 2009 07:15:14 +0200
Autor: Paul Muster
|
Re: Umschalten auf verschiedene IP-Adressen
Paul Muster typed:
>> Ich bin leider etwas misstrauisch gegenüber dem Routing- und
>> RAS-Dienst.
>
> Aha. "Ich vertraue meinem linken Hinterrad nicht." Naja, jeder, wie
> er mag.
Nein, es ist nicht das linke Hinterrad, es ist der zuschaltbare
Allradantrieb. Der sollte nur benutzt werden, wenn er wirklich gebraucht
wird.
> Nix gegen dein Skript, aber die VB-Syntax ist fünfmal
> gewöhnungsbedürftiger. Bevor ist mich mit solchen Dingen wie
>
> Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
> "!\\.\root\cimv2")
>
> auseinandersetze (und das muss ich, wenn ich dein Skript verwenden
> wollte, weil ich keine unverstandenen fremden Skripte auf meinen
> Kisten laufen lasse), habe ich die komplette Syntax von sämtlichen
> Parametern von netsh.exe durch.
Du kannst das Ganze natürlich auch als Batch realisieren. Diese Sprache
ist unter Windows aber noch komplizierter und fehleranfälliger, das
wollte ich damit sagen. VBScript ist für einen AuÃenstehenden logisch
leichter nachzuvollziehen, und die WMI läuft im Hintergrund sowieso
immer mit. Wenn es richtig formatiert wird, ist VBScript auch leichter
zu warten und besitzt mehr Möglichkeiten.
Dieses Skript zeigt den Namensraum der auf einem Windowssystem
installierten und im Hintergrund mitlaufenden WMI an:
'############################# Space.vbs ##############################
' Skript zur Anzeige aller Namensräume der WMI.
' Dieses Skript sollte *nur* mit *CScript* als /Host/ in der
' _Eingabeaufforderung_ ausgeführt werden:
' CScript <Pfad>\Space.vbs
' Wer dieses Skript ausführt, kommt in die Hölle. Oder er ist es schon.
' This script is prohibited for Lunix-Looser! SeBigBoss
Option Explicit
Const NSPACE = "__NAMESPACE", ROOT = "\\.\Root"
Dim wmi, wmiNameSpace
Set wmi = GetObject("winmgmts:" & ROOT)
WScript.Echo vbCRLF & "These are the top namespaces:"
For Each wmiNameSpace In wmi.InstancesOf(NSPACE)
WScript.Echo Space(10) & wmiNameSpace.Name
Next
WScript.Echo vbCRLF & "Follow soon in the infinite depth of Gates:"
WScript.Sleep 10000
WScript.Echo vbCRLF & "There were " & Numsi(ROOT) & " Classes found."
Function Numsi(strPaNameSpace) ' Rekursion durch die Namensräume
Dim wmi, wmiClass, wmiNameSpace, str, i
Set wmi = GetObject("winmgmts:" & strPaNameSpace)
For Each wmiNameSpace In wmi.Execquery("select * from " & NSPACE)
str = wmiNameSpace.Path_.Namespace & "\" & wmiNameSpace.Name
WScript.Echo vbCRLF & str & ":"
For Each wmiClass In GetObject("winmgmts:" & str).SubclassesOf
WScript.Echo Space(4) & wmiClass.Path_.Relpath
i = i + 1
Next
i = i + Numsi(str)
Next
Numsi = i
End Function
'############################ Space.vbs ###############################
*Creating a WMI Script*
http://msdn.microsoft.com/en-us/library/aa389763%28VS.85%29.aspx
*Constructing a Moniker String*
http://msdn.microsoft.com/en-us/library/aa389292%28VS.85%29.aspx
--
ЯR
Datum: Tue, 18 Aug 2009 12:24:38 +0200
Autor: Rüdiger Rösler
|
|
|