Skript aufgrund von Netzadresse ausführen
Hallo zusammen,
kennt jemand eine Möglichkeit ein Skript aufgrund einer Netzadresse auszuführen?
Ich möchte folgendes damit umsetzen:
Wenn die Netzadresse 192.168.100.0 ist goto Skript A
Wenn die Netzadresse 192.168.101.0 ist goto Skript B
usw.
Danke für eure Hilfe
kennt jemand eine Möglichkeit ein Skript aufgrund einer Netzadresse auszuführen?
Ich möchte folgendes damit umsetzen:
Wenn die Netzadresse 192.168.100.0 ist goto Skript A
Wenn die Netzadresse 192.168.101.0 ist goto Skript B
usw.
Danke für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311122
Url: https://administrator.de/contentid/311122
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
12 Kommentare
Neuester Kommentar
Hi,
z.B. mit VBscript
E.
z.B. mit VBscript
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Temp : Temp = WshShell.ExpandEnvironmentStrings("%temp%")
FSO.DeleteFile Temp & "\ipconfig.txt", True
WshShell.Run "%comspec% /c ipconfig /all > %temp%\ipconfig.txt",0,True
Dim Line, TestLine
Dim IPaddresses : IPaddresses = ""
If FSO.Exists(Temp & "\ipconfig.txt") Then
With FSO.OpenTextFile(Temp & "\ipconfig.txt")
While Not .AtEndOfStream
Line = .ReadLine
TestLine = LCase(Replace(Replace(Line, " ", ""), "-", ""))
If InStr(TestLine,"ipadresse") > 0 Or _
InStr(TestLine,"ipv4adresse") > 0 Or _
InStr(TestLine,"ipaddress") > 0 Or _
InStr(TestLine,"ipv4address") > 0 Then
Line = Trim(Split(Split(Line, ":")(1), "(")(0))
If UBound(Split(Line,".")) = 3 Then
If IPaddresses = "" Then
IPaddresses = Line
Else
IPaddresses = IPaddresses & vbTab & Line
End If
End If
End If
Wend
End With
FSO.DeleteFile Temp & "\ipconfig.txt", True
End If
IPaddresses = Split(IPaddresses, vbTab)
Dim IPaddress
For Each IPaddress In IPaddresses
If Left(IPaddress, 12) = "192.168.100." Then
'tu dies
...
ElseIf Left(IPaddress, 12) = "192.168.101." Then
'tu das
...
ElseIf Left(IPaddress, 12) = "192.168.102." Then
'tu jenes
...
End If
Next
WScript.Quit
Function Ping(DestinationHost)
On Error Resume Next
Ping = False
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & DestinationHost & "'")
For Each oStatus in oPing
If IsNull(oStatus.StatusCode) Or oStatus.StatusCode <> 0 Then
Ping = False
Else
Ping = True
End If
Next
End Function
E.
Hi.
Powershell
Regards
Powershell
gwmi win32_NetworkadapterConfiguration -Filter "IPEnabled=True" | select -Expand IPAddress | %{
switch -Wildcard ($_){
'192.168.101*' {
# do something
}
'192.168.102*' {
# do something
}
}
}
Hi,
in batch:
Beliebig erweiterbar.
Gruß,
@Snowman25
in batch:
@ECHO OFF
FOR /F "tokens=2 delims=/ " %%i in ('netsh interface ipv4 show addresses^|findstr 192.168.^|findstr /I subnet') do (
IF x%%i==x ECHO "IP nicht gefunden: %%i" & pause
IF x%%i==x192.168.100.0 GOTO :A
IF x%%i==x192.168.101.0 GOTO :B
)
GOTO :eof
:A
:: execute skript A
GOTO :eof
:B
:: execute skript B
GOTO :eof
Gruß,
@Snowman25
@129813
Ich fürchte, das funktioniert mit DHCP-Adressen nicht. Zumindest nicht in VBscript.
@Snowman25
Funktioniert das mit DHCP-Adressen?
Ich fürchte, das funktioniert mit DHCP-Adressen nicht. Zumindest nicht in VBscript.
@Snowman25
Funktioniert das mit DHCP-Adressen?
Zitat von @emeriks:
@129813
Ich fürchte, das funktioniert mit DHCP-Adressen nicht. Zumindest nicht in VBscript.
This works absolutely fine with DHCP!@129813
Ich fürchte, das funktioniert mit DHCP-Adressen nicht. Zumindest nicht in VBscript.
Netsh the same, works too.
Why shouldn't it ?? They all gather their information from the same source, it doesn't matter if static or dynamic.
VBS works too, tested successfully:
Set colItems = (GetObject("winmgmts:\\.\root\CIMV2")).ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=True")
For Each objItem In colItems
WScript.Echo "IP(s): " & Join(objItem.IPAddress,", ")
Next
Ja. Schau dir mal den Output von
Das sieht ungefähr so aus:
Im Falle von aktiviertem DHCP ist die Ausgabe entsprechend anders (DHCP aktiviert: Ja).
Gruß,
@Snowman25
netsh i ipv4 sh a
[kurzform] an.Das sieht ungefähr so aus:
Konfiguration der Schnittstelle "MANAGEMENT"
DHCP aktiviert: Nein
IP-Adresse: 192.168.10.251
Subnetzpräfix: 192.168.10.0/24 (Maske 255.255.255.0)
Schnittstellenmetrik: 10
Im Falle von aktiviertem DHCP ist die Ausgabe entsprechend anders (DHCP aktiviert: Ja).
Gruß,
@Snowman25
Moin anak1m,
falls snowman25s Skizze die vorlage für deinen Schnupsel war:
-> dort ist ein Tippfehler enthalten.
Eine Sprungmarke im Batch hat immer die Form
Oben steht es versehentlich als
Das wird als Sprungmarke nicht gefunden.
Wenn es das nicht war/du diesen Tippfehler nicht mit übernommen hast, dann zeige uns doch dein komplettes Skript in Codetags.
Grüße
Biber
falls snowman25s Skizze die vorlage für deinen Schnupsel war:
-> dort ist ein Tippfehler enthalten.
Eine Sprungmarke im Batch hat immer die Form
:MarkeXY
, als Doppelpunkt-Name-des-Labels.Oben steht es versehentlich als
A:
und B:
, als Name-des-Labels-Doppelpunkt.Das wird als Sprungmarke nicht gefunden.
Wenn es das nicht war/du diesen Tippfehler nicht mit übernommen hast, dann zeige uns doch dein komplettes Skript in Codetags.
Grüße
Biber
Moin anak1m,
okay, *lach*...
Und wo geht die Klammer der FOR-Anweisung wieder zu, die du in Zeile 04 letztes Zeichen öffnest?
Spendier doch mal in der Zeile 06 nach dem "& pause" noch ein " & goto :eof".
Und in der Zeile vor der ersten Sprungmarke (:A) eine Klammer-Zu.
Und jeweils am Ende der Pseudo-"Unterprozeduren" :A und :B auch ein goto :eof.
Sonst wird nämlich - da :A kein Ende hat, auch :B bzw alle folgenden Zeilen ausgeführt.
Grüße
Biber
okay, *lach*...
Und wo geht die Klammer der FOR-Anweisung wieder zu, die du in Zeile 04 letztes Zeichen öffnest?
Spendier doch mal in der Zeile 06 nach dem "& pause" noch ein " & goto :eof".
Und in der Zeile vor der ersten Sprungmarke (:A) eine Klammer-Zu.
Und jeweils am Ende der Pseudo-"Unterprozeduren" :A und :B auch ein goto :eof.
Sonst wird nämlich - da :A kein Ende hat, auch :B bzw alle folgenden Zeilen ausgeführt.
Grüße
Biber
Zitat von @Biber:
Eine Sprungmarke im Batch hat immer die Form
Oben steht es versehentlich als
Oh. Natürlich gleich korrigiert Eine Sprungmarke im Batch hat immer die Form
:MarkeXY
, als Doppelpunkt-Name-des-Labels.Oben steht es versehentlich als
A:
und B:
, als Name-des-Labels-Doppelpunkt.