ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
1589
1589
EMPFEHLEN
-
Ja, ich nochmal, also ich habe den Dos Befehl nslookup jetzt erfolgreich in einen String abgeschoben:
Code :1 2 3
Set objShell = CreateObject("WScript.Shell") Set objExec = objShell.Exec("CMD /c nslookup " & strName) strNslookupResult = LCase(objExec.StdOut.ReadAll)
Die Ausgabe auf der Konsole sieht dann so aus (3 Möglichkeiten):
Fall 1
Fall 2 (Regelfall)
Server: --Nameserver--
Address: --Nameserver IP--
***--Servername-- wurde von --Nameserver-- nicht gefunden: Non-existent domain
Fall 3
Server: --Nameserver--
Address: --Nameserver IP--
Name: --Servername--
Address: --Server IP--
So, ich möchte hierbei die --Server IP-- haben.
Server: --Nameserver--
Address: --Nameserver IP--
Name: --Servername--
Address: --Server IP--
Aliases: -Aliasname des Servers--
Ich habs bereits über einen Split versucht
Code :1
vntResult = Split(strNslookupResult, "address: ")
Allerdings komme ich da zu unbefriedigenden Ergebnissen:
Wenn ich in Fall 1 reinmarschiere bekomme ich einen kritischen Fehler; habe versucht es über
abzufangen, dass scheint allerdings so nicht zu gehen da er mir auch hier Fehler 9: Ausserhalb des gültigen Bereichs ausgibt.Code :1 2 3
If (vntResult(2) = Null) Then vntResult(2) = " " End If
Bei Fall 2 gibt er mir zwar die IP aus, allerdings hat er dahinter zwei Zeilenumbrüche, die durch zwei Quadrate dargestellt werden, was auch nicht so toll ist.
Fall 3 ist die Ausgabe:
--IP des Servers--
aliases: --Aliasname des Servers--
Auch hier wieder die zwei Zeilenumbrüche am Ende, sowie ein Zeilenumbruch nach der IP.
Ich möchte eigentlich -wenn vorhanden- nur die IP Adresse ausgegeben haben, ist dies nicht der Fall soll die Ausgabe ein leerer String sein.
Ich hoffe mir kann jemand helfen, ich such hier schon seit ner ganzen Weile, komme aber leider auf keinen grünen ZweigGeändert von Razortide (04.12.06 um 15:16 Uhr)
-
hab jetzt momentan kein VB zur Hand, aber wenn ich mich recht entsinne, mußt Du NULL über die Funktion isNULL() abfragen. In Deinem Falle
If isNULL(vntResult(2)) Then vntResult(2) = " "Die Lösung für die größten Computer-Probleme: schalt ihn aus!
-
Nach einiger Recherche hab ich jetzt herausgefunden (ja, als Newbie ist man da stolz drauf
)
Das
Code :1
vntResult = Split(strNslookupResult, vbCrLf)
Das Ganze in Zeilen splittet, was erstmal großartig ist, aber mein Verhängnis bleibt die Nullwert Überprüfung.
Selbst wenn ich das Array vorher initialisiere:
Code :1 2 3 4
For a = 0 To 5 ReDim strResult(a) strResult(a) = "" Next
Bekomm ich immer noch Laufzeitfehler 9
-
Ah, habs hinbekommen. Für den Fall das es nochmal jemand braucht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
Rem ============================= Rem == IP-Ermittlung == Rem ============================= Sub Ip_Ermitteln() Dim strName As String Dim strNsl0okupResult As String Dim strResult() As String Dim i As Integer i = 3 Do While ActiveSheet.Cells(i, 2) <> "" Rem ======================================== Rem == Name des Servers wird ausgelesen == Rem ======================================== strName = ActiveSheet.Cells(i, 2).Value Rem ======================================== Rem == Nslookup wird ausgelesen == Rem ======================================== Set objShell = CreateObject("WScript.Shell") Set objExec = objShell.Exec("CMD /c nslookup " & strName) Rem ======================================== Rem == Nslookup wird gesplittet == Rem ======================================== strNslookupResult = LCase(objExec.StdOut.ReadAll) strResult = Split(strNslookupResult, vbCrLf) Rem ======================================== Rem == Fallunterscheidung == Rem ======================================== If Not (UBound(strResult) < 4) Then If (UBound(Split(strResult(4), "address: ")) = 0) Then strResult = Split(strResult(4), "addresses: ") Else strResult = Split(strResult(4), "address: ") End If Else strResult(1) = "" End If Rem ======================================== Rem == IP-Adresse wird geschrieben == Rem ======================================== ActiveSheet.Cells(i, 6).Value = strResult(1) i = i + 1 Loop End Sub
Ähnliche Themen
-
NSLookup in C Programm durchführen!
Von paddy_de im Forum C/C++Antworten: 1Letzter Beitrag: 13.03.10, 16:37 -
Splitten
Von gd12 im Forum C/C++Antworten: 3Letzter Beitrag: 13.11.08, 18:57 -
DNS-Server Bind9 nslookup?
Von Shooter2k im Forum Linux & UnixAntworten: 0Letzter Beitrag: 30.08.07, 17:01 -
nslookup
Von herbertthaler im Forum Internet, DSL & FlatrateAntworten: 7Letzter Beitrag: 18.01.05, 08:06 -
nslookup unter php
Von brÅinstorm im Forum PHPAntworten: 2Letzter Beitrag: 02.06.02, 15:15





Zitieren
Login





