Dos Abfrage nslookup %computername% auswerten

  • Hallo zusammen

    Ich muss mit Autoit die Abfrage von einem DOS Kommando abfragen

    Das Ergebniss der Abfrage sieht dann so aus:


    Code
    C:\>nslookup %computername% 
    Server: dnssrv.MyDomain.com 
    Address: 192.88.67.30 
    Name: myServer.MyDomain.lab 
    Address: 192.88.213.161 
    
    
    C:\>

    Der Sinn der Abfrage ist, herauszufinden in welcher Domain oder Subdomain ich stecke...

    Hier im Forum habe ich etwas dazu gefunden:

    [autoit]

    Func _getDOSOutput($command)
    Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False) & @CR
    If @error Then ExitLoop
    Sleep(10)
    WEnd
    Return StringStripWS($text, 3)
    EndFunc ;==>_getDOSOutput
    $nslookupcontent=(_getDOSOutput('nslookup %Computername%') & @CRLF)
    MsgBox(4096, "Test", $nslookupcontent, 10)

    [/autoit]

    Nur jetzt, wie weiterverarbeiten, und auch nur die Zeile Nr.4 zu verwerten, dass wird schwieriger.

    Denn If StringInStr( $nslookupcontent, "mydomain.com") kommt ja zb auch immer in Zeile1 vor..

    Ich hoffe ihr wisst rat?! Leider darf ich nur nslookup verwenden, und keine Registry. X(

    Surfy

    Einmal editiert, zuletzt von Surfy (14. Oktober 2010 um 18:22)

  • Hi,

    vielleicht so ?

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Func _getDOSOutput($command)
    Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False) & @CR
    If @error Then ExitLoop
    ;~ Sleep(10)
    WEnd
    Return StringStripWS($text, 3)
    EndFunc ;==>_getDOSOutput

    [/autoit] [autoit][/autoit] [autoit]

    $nslookupcontent=_getDOSOutput('nslookup %Computername%')
    MsgBox(4096, "Test", $nslookupcontent, 10)

    [/autoit] [autoit][/autoit] [autoit]

    $aOutput = StringSplit (StringStripCR ($nslookupcontent), @LF)
    _ArrayDisplay ($aOutput)

    [/autoit]


    Dann jedes Arrayelement abklopfen ...


    Gruß
    Greenhorn


  • Danke für die Unterstützung!

    Ich bräuchte sowas wie

    ArrayReadLine(4) ;)

    DH nur Zeile4 dürfte ausgewertet werden. Sobald ich Zeilenweise abklopfe, versaut mir Zeile1 die Auswertung, da da die Comdomain immer enthalten ist.

  • [autoit]

    If StringInStr($aOutput[4],"mydomain.com") Then ;....

    [/autoit]

    Lg, Fabian

    3 Mal editiert, zuletzt von Fabian (14. Oktober 2010 um 18:20)

  • Herzlichen Dank euch beiden!

    [autoit]

    #include <Array.au3>
    Func _getDOSOutput($command)
    Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False) & @CR
    If @error Then ExitLoop
    ;~ Sleep(10)
    WEnd
    Return StringStripWS($text, 3)
    EndFunc ;==>_getDOSOutput
    $nslookupcontent=_getDOSOutput('nslookup %Computername%')
    MsgBox(4096, "Test", $nslookupcontent, 10)
    $aOutput = StringSplit (StringStripCR ($nslookupcontent), @LF)
    ;_ArrayDisplay ($aOutput)
    $sOut = $aOutput[4]
    MsgBox(4096, "Test", $sOut, 10)

    [/autoit]

    So lässt sich nun via

    [autoit]

    If StringInStr( $nslookupcontent, "myDomain.com") Then

    [/autoit]

    alles mögliche Abfragen und anstellen :rock:

    Danke euch!