1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Surfy

Beiträge von Surfy

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 15:51

    Danke für eure Tips!

    Schnitzel: ich erhalte jetzt keine Fehlermeldung mehr, aber immer eine Msgbox mit Alias 0 - obwohl der Server in der Liste ist.

    @ sumsum: Ich habe leider ein x86 OS, und kann das nicht starten

    Beim Kompilieren deines Scripts happert es hier:


    Zitat

    >Running:(3.3.6.1):C:\Program Files\AutoIt3\autoit3.exe "C:\temp\sumsum.au3"
    C:\temp\sumsum.au3 (9) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    If StringInStr($split[3], $server) Then Return $split[1]
    If StringInStr(^ ERROR

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 15:36

    Ich lande dann immer hier:

    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 14:59

    Danke Dir sumsum

    Mein Problem ist wohl, das ich nicht weiss, wie die Function aufrufen ;(

    Ich versuche es grad so

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    Func _SearchDNS($server, $file)
    Local $read
    _FileReadToArray($file, $read)
    For $i = 1 To $read[0] Step +1
    $split = StringSplit($read[$i], " ")
    If StringInStr($split[3], $server) Then Return $split[1]
    Next
    Return 0
    EndFunc ;==>_SearchDNS
    $file = "c:\temp\alias.txt"
    $server="srv08110"
    $query=_SearchDNS($server, $file)
    MsgBox(4096, "Test", $query, 10)

    [/autoit]
  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 14:43

    Ich danke euch! in beiden fällen komme ich aber noch nicht zum Ziel.

    [autoit]

    #include <file.au3>
    $alias=""
    $file = "c:\temp\alias.txt"
    $count=_FileCountLines($file)

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

    For $i=1 To $count
    $read=FileReadLine($file,$i)
    $split=StringSplit($read," ")
    If StringInStr($read,"srv08110") Then $alias&=$split[1]
    Next
    MsgBox(0,"",$alias)

    [/autoit]

    Hier erhalte ich immer eine leere MSGbox. In sumsum Ansatz, erhalte ich fehler beim Kompilieren ;(

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 14:22

    Rodny_le_lude: genau sowas suche ich. Nur dass der Alias-Wert der sein muss, der in derselben Zeile ist, wie der Servername!

    Zur Erklärung

    Alias Servername

    DBserver CNAME srv08110.mydomain.com


    Wenn ich nun nach srv08110 suche - will ich den Wert des Aliases auslesen, hier DBserver

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 14:19

    Ich will nach einem Servernamen suchen - und den zugehörigen DNS Alias erhalten. Der Alias steht jeweils am anfang der zeile - aber in der gleichen Zeile wie der Server selber.

    Wenn ich zb nach srv08110 suche, lande ich in dieser Zeile:

    DBserver CNAME srv08110.mydomain.com

    Jetzt will ich alles ausser "DBserver" löschen, so dass ich mit diesem Wert weiterarbeiten kann..

  • Textdatei zeilenweise auswerten

    • Surfy
    • 1. Februar 2011 um 13:58

    Hallo zusammen

    Ich will eine Textdatei auswerten:

    Zitat

    Fileserver CNAME srv01017.mydomain.com

    Mailserver CNAME srv01023.mydomain.com

    Appserver CNAME srv01110.mydomain.com

    DBserver CNAME srv08110.mydomain.com

    Ich muss eine Suche nach dem Servernamen (z.B. srv08110) absetzen, und den Alias DBserver erhalten.

    Habt ihr eine Idee wie ich da ansetzen kann?

  • StdinWrite Problem & DOS bzw nslookup.exe

    • Surfy
    • 1. Februar 2011 um 13:00

    Hallo zusammen

    Ich hab die Lösung gefunden: http://books.google.ch/books?id=AY-Z9g6z-0IC&pg=PA45&lpg=PA45&dq=nslookup+ls+-a+alternative&source=bl&ots=dEW6Idjzdr&sig=UWldqz7W54V_vM8UgRaJtwKEHWA&hl=de&ei=afBHTY_oAYaBOouphNYE&sa=X&oi=book_result&ct=result&resnum=9&ved=0CDgQ6AEwCA#v=onepage&q&f=false

    Durch eine "input" Datei, kann man zeilenweise Befehle übergeben 8o :thumbup:

    Herzlichen Dank für euer Gehirnschmalz! Das ganze war nicht via Script / Auto-It lösbar - bzw nur auf der Dos ebene selber.

  • StdinWrite Problem & DOS bzw nslookup.exe

    • Surfy
    • 27. Januar 2011 um 08:53

    Im Internet habe ich noch dies gefunden: Hat jemand die passende Entwicklungsumgebung, und kann testen ob das läuft?

    Capturing nslookup shell mit C #

    http://de.w3support.net/index.php?db=so&id=353601


    Code
    ProcessStartInfo si = new ProcessStartInfo("nslookup"); 
    si.RedirectStandardInput = true; 
    si.RedirectStandardOutput = true; 
    Process nslookup = new Process(si); 
    nslookup.Start(); 
    nslookup.StandardInput.WriteLine("ls -a mydomain.local"); 
    nslookup.StandardInput.Flush(); 
    // use nslookup.StandardOutput stream to read the result.

    Hier auch noch ein Link der nslookup detailliert erklärt, und auch aufzeigt das die Abfrage ls -a domain.com nicht via interaktivem Modus zur Verfügung steht.

    http://publib.boulder.ibm.com/infocenter/zos…f1a1c260347.htm

    http://deathrow.vistech.net/help?key=TCPIP_Services~NSLOOKUP&explode=yes&title=VMS Help&referer=http:/dahmer.vistech.net/

    Vielleicht erkennt jemand anderes jetzt auch, wo das problem in meinem Auto-it Script ist, wenn ihr den C# Code zum vergleichen habt? ;(

    Danke euch,


    Surfy

  • StdinWrite Problem & DOS bzw nslookup.exe

    • Surfy
    • 25. Januar 2011 um 14:56

    Hallo zusammen

    Ich habe hier im Forum den funktionierenden Script gefunden, der via @ComSpec die FTP.exe steuern kann. Leider läuft das nicht mit nslookup.exe.

    [autoit]


    Local Const $S_COMMAND = "ftp.exe"
    Local Const $I_PID = Run(@ComSpec & ' /c "' & $S_COMMAND & '"', @WorkingDir, @SW_SHOW, 7)
    StdinWrite($I_PID, "help")
    StdinWrite($I_PID)
    Local $s_stdout = ""
    While 1
    $s_stdout &= StdoutRead($I_PID)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "Debug", $s_stdout)

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

    Versuche ich diesen zu adaptieren, so dass ich damit die NSlookup.exe aufrufe:

    [autoit]

    Local Const $S_COMMAND = "nslookup.exe"
    Local Const $I_PID = Run(@ComSpec & ' /c "' & $S_COMMAND & '"', @WorkingDir, @SW_SHOW, 7)
    StdinWrite($I_PID, "?")
    StdinWrite($I_PID)
    Local $s_stdout = ""
    While 1
    $s_stdout &= StdoutRead($I_PID)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "Debug", $s_stdout)

    [/autoit]

    Mein Ziel ist es, via


    Zitat


    cmd.exe

    nslookup

    ls -a mydomain.com >alias.txt


    Eine Liste aller DNS Aliase auszugeben. Leider habe ich keinen weg gefunden, das ganze zu scripten, und muss daher auf consolewrite/StdinWrite ausweichen...


    Ich hoffe ihr seht wo mein denkfehler liegt ;(

    Danke euch,

    Surfy

  • Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript...

    • Surfy
    • 7. Dezember 2010 um 18:29

    Danke Dir, Chip :rock: :rock:


    Thread nun auf erledigt ^^

  • Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript...

    • Surfy
    • 7. Dezember 2010 um 16:28

    Weil einige der Server so richtig schief drin hängen.. Auch unter

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters "Domain" ist nicht zuverlässig erkennbar, in welcher Subdomain die Kisten hängen :cursing:

    Wie kann ich diese Abfrage hier in Zeile 13 umbauen, dass nur Zeile 4 ausgewertet wird, falls diese auch vorhanden ist?

    [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]

    $nslookupread=(_getDOSOutput('nslookup %Computername%') & @CRLF)
    $nslookupwork = StringSplit (StringStripCR ($nslookupread), @LF)
    $nslookupcontent = $nslookupwork[4]

    [/autoit]


    Diese Fehlermeldung ist ja echt unschön...

  • Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript...

    • Surfy
    • 7. Dezember 2010 um 15:08

    aua, wie recht du hast - herzlichen Dank!


    Zitat


    C:\WINDOWS\system32>nslookup %computername%
    Server: ns.mydomain.com
    Address: 192.103.67.30

    *** ns.mydomain.com can't find servername: Non-existent domain

    C:\WINDOWS\system32>


    Mein Problem ist, dass ich herausfinden muss, in welcher Domain sich der Server befindet. Das kann mydomain.dev, oder mydomain.com oder myotherdomain.com subdomain.mydomain.com etc sein.

    Ich verarbeite das ganze dann relativ arm äh billig ala

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

    Funktionieren tut das anscheinend in der Domain wunderbar, aber dann in der Workgroup nicht mehr.. Ziel wäre, dass eine Exe überall einsetzbar wäre, egal in welcher Domain.

    :cursing:

  • Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript...

    • Surfy
    • 7. Dezember 2010 um 14:45

    8|

    Herzlichen Dank für den Tip!


    [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]

    $nslookupread=(_getDOSOutput('nslookup %Computername%') & @CRLF)
    $nslookupwork = StringSplit (StringStripCR ($nslookupread), @LF)
    $nslookupcontent = $nslookupwork[4]

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

    appl.au3 (41) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:


    Zeile 13 ist die (41) im Script... Weiss jemand, wieso diese "manchmal" aneckt 8o

  • Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript...

    • Surfy
    • 7. Dezember 2010 um 14:21

    Hallo zusammen

    Ich kämpfe mit einer mysteriösen Fehlermeldung:

    Linie 1102 (file "c:\install\appl\appl.exe") Error: Array variable has incorrect nummer of subscript or subscript dimension range exceeded..

    Mysteriös, weil die "Anwendung" unter Server 2003 und Server 2003 x64 erfolgreich getestet wurde - die Domain Mitglieder sind.

    Nun die gleichen Sourcen auf einem Workgroup 2003 Server verwendet - führt zu diesem Ergebniss ?(

    Das sind eigentlich Simple Exe Files, mit Fileinstall und Execute.. Ich hoffe ihr habt mir einen Tip, wo ich ansetzen könnte, ohne dass ich hier den Code von mehren Exe Files posten muss :pinch:

  • x64 Registry aus einer x86 Exe...

    • Surfy
    • 20. Oktober 2010 um 08:19

    Danke für eure Tips.

    Zum teil war mir das neu (zb dass "nur" der Pfad anders ist), aber zb das mit HKLM64 kannte ich schon.

    Jetzt stellt sich aber schnell die Frage - wieso ich mit

    [autoit]

    RunWait(@COMSPEC & " /k subinacl /keyreg " & "HKLM64\Software\Candle" & ' /grant="mydomain.com\myuser"=f')

    [/autoit]

    den 64Bit pfad nicht erreichen kann... Gut, Autoit Syntax.. Aber wie müsste das aussehen, damit ich auch in der Commandline (@Compspec) diesen Pfad erreichen kann?

    Danke euch,

    Surfy :S

  • x64 Registry aus einer x86 Exe...

    • Surfy
    • 20. Oktober 2010 um 08:19

    Danke für eure Tips.

    Zum teil war mir das neu (zb dass "nur" der Pfad anders ist), aber zb das mit HKLM64 kannte ich schon.

    Jetzt stellt sich aber schnell die Frage - wieso ich mit

    [autoit]

    RunWait(@COMSPEC & " /k subinacl /keyreg " & "HKLM64\Software\Candle" & ' /grant="mydomain.com\myuser"=f')

    [/autoit]

    den 64Bit pfad nicht erreichen kann... Gut, Autoit Syntax.. Aber wie müsste das aussehen, damit ich auch in der Commandline (@Compspec) diesen Pfad erreichen kann?

    Danke euch,

    Surfy

  • x64 Registry aus einer x86 Exe...

    • Surfy
    • 15. Oktober 2010 um 16:25

    Hallo zusammen

    Ich versuche auf einem 64 Bit System einen Registryhive zu Berechtigen.

    Da ich schon unzähliche andere Actions im gleichen Setup mit subinacl erledigen konnte, würde ich gern auch den Rest mit diesem Tool abhandeln.

    Unter x86 geht auch alles, nur unter x64


    HKEY_LOCAL_MACHINE\SOFTWARE\Candle

    werden die Berechtigungen dann unter

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Candle

    geschrieben. Beide Hives existieren auch. Nun ist die Frage, wie kann ich aus einem 32 Bit AutoIt Aufruf mit subinacl den normalen x64 Hive erreichen?


    [autoit]

    RunWait('subinacl /keyreg "HKEY_LOCAL_MACHINE\Software\Candle" /grant="mydomain.com\myuser"=f')

    [/autoit]

    Das ganze geht dann aber in den Wow6432Node Hive ;(

    Experimente mit:

    [autoit]

    DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
    RunWait(@COMSPEC & " /k subinacl /keyreg " & "HKLM64\Software\Candle" & ' /grant="mydomain.com\myuser"=f')

    [/autoit]

    schlugen genauso fehl. Seht ihr noch einen weg, oder muss ich auf secedit oder anderes übergehen?

    Danke euch!

    Surfy

  • Dos Abfrage nslookup %computername% auswerten

    • Surfy
    • 14. Oktober 2010 um 18:22

    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!

  • Dos Abfrage nslookup %computername% auswerten

    • Surfy
    • 14. Oktober 2010 um 18:12

    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.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™