ist mein konzept möglich mit Autoit

  • Hallo zusammen,

    Ich habe mir ein neues Konzept überlegt, aber erstmal schreibe ich mein kleines problem mal auf.

    Ich habe eine bestimmte anzahl an rechnern in einem Netzwerk,
    Da muss eine Datei kopiert werden auf alle Rechner.
    Diese Rechner wiederrum habe ich alle in einer Excel Liste stehen (kann aber auch ne txt datei drauss machen)
    Ist es möglich mit AutoIt auf diese Rechner nach und nach eine Verbindung aufzubauen nach der Liste und eine Datei zu kopieren?
    Danach einfach wieder die Verbindung lösen! Wenn möglich auch noch eine Rückmeldung einbauen, welche rechner er erreicht hat und welche Offline waren?

    Ist das zu realisieren?
    Leider bin ich absoluter anfänger in diesem Thema und ich denke das mit der verbindung zu dem rechner würde ich auch ohne probleme hinbekommen, aber nicht wenn der rechnername sich jedesmal ändern würde?!?


    Kann mir da jemand helfen? Ein paar gedankenhilfen geben!

    LG Psyche

  • am einfach über die std. Freigabe c$.
    Die sollte es den Windows Rechnern geben...

    Direkt über TCP/IP wäre doch jeweils eine Client Anwendung nötig ?!? Dann könnte man ja gleich die Datei auf jeden Rechner kopieren..

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Hallo

    also diese Dateien sollen auf jeden rechner kommen, aber nicht alle auf einmal sondern dieser User soll das nur machen wenn er die exe datei von mir per mail geschickt bekommt!

  • Hi,

    aber was hat es dann mit der Excel Tabeller mit der Rechnerliste auf sich? Ich dachte Du willst all diese Rechner aus der Liste nehmen und dann das Programm verteilen ...
    Also Du solltest nochmal genau definieren wie das ablaufen soll! Per mail oder aus der Excel Tabelle?

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • ich sollte anfangen etwas weniger zu arbeiten!
    das war schon wieder ein anderes projekt!

    ehm klar geht das über die excel tabelle, die dateien sollen von meinem rechner aus an die ganzen rechner verteilt werden.
    Ich habe nur gar keine ahnung wie ich das script anfangen muss, um die excel liste abzuarbeiten zeile für zeile!
    bin ein absoluter anfänger was das thema angeht!

    ich habe ein script geschrieben gehabt, das von jedem rechner aus ausgeführt werden kann, aber da habe ich nen fehler drin und da hat auch keiner ne Antwort drauf gehabt!

    User.exe

    [autoit]

    #include <Daten.au3>

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

    Local $title = "Title"
    Local $admin = "User"
    Local $pwd = "PW"
    Local $Domain = "Domäne"

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

    ; Map X
    DriveMapAdd("X:", "\\Host\Folder$\Folder\Folder", 0, $admin, $pwd)
    ; Adminrechte geben
    RunAsSet("$admin", "$Domain", "$pwd",0)
    ; Programm ausführen
    RunWait("Daten.exe", "X:",1)
    ; Adminrechte nehmen
    RunAsSet()
    ; Del X
    DriveMapDel("X:")

    [/autoit]

    Daten.exe

    [autoit]


    RunAsSet("User", "Domain", "PW",0)
    ; Ordner erstellen
    DirCreate("C:\Pfad\Pfad\Pfad\Pfad\Pfad")
    ; Kopieren der Dateien
    FileCopy("X:\Pfad\test.txt", "C:\",1)
    FileCopy("X:\Pfad\test.ini", "C:\Pfad\Pfad\Pfad\Pfad\Pfad",1)

    [/autoit]

    wenn das funktionieren würde wäre alles top!
    Das was nicht funktioniert ist

    User.exe
    ; Programm ausführen
    RunWait("Daten.exe", "X:",1)

    er macht die verbindung und trennt sie auch wieder.
    wo liegt mein fehler oder ihr könnt mir helfen ein andere script zu schreiben.

    So langsam drängt bei mir ein wenig die Zeit!

  • Vielleicht deswegen? Aus der Hilfe:
    The "Secondary Logon service" or "RunAs service" must not be disabled if you want this function to work.

    Oder hast du's schon mal mit nur einem Skript probiert?

    [autoit]

    #include <Daten.au3>

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

    Local $title = "Title"
    Local $admin = "User"
    Local $pwd = "PW"
    Local $Domain = "Domäne"

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

    ; Map X
    DriveMapAdd("X:", "\\Host\Folder$\Folder\Folder", 0, $admin, $pwd)
    ; Adminrechte geben
    RunAsSet("$admin", "$Domain", "$pwd",0)
    ; Programm ausführen
    DirCreate("C:\Pfad\Pfad\Pfad\Pfad\Pfad")
    ; Kopieren der Dateien
    FileCopy("X:\Pfad\test.txt", "C:\",1)
    FileCopy("X:\Pfad\test.ini", "C:\Pfad\Pfad\Pfad\Pfad\Pfad",1)
    ; Adminrechte nehmen
    RunAsSet()
    ; Del X
    DriveMapDel("X:")

    [/autoit]
  • Als erstes brauchst du vermutlich die excel UDF:

    http://www.autoitscript.com/forum/index.php?showtopic=34302

    vielleicht hatte auch keiner eine Antwort auf Deine Frage, weil Du die falsche Frage gestellt hast :rolleyes:
    Es wäre Sinnvoll zu Wissen, was in der Excel Tabelle alles für Infos stehen( IP Adressen oder PC-Name ...)

    Habe ich richtig verstanden.. Das Programm soll "Server" seitig gestartet werden.
    Was hat es für einen Grund das Programm in User.exe und Daten.exe zu unterteilen? Sehe keinen Sinn darin.

    Wenn die Zeit knapp wird, wäre es sinnvoll so viel Info´s wie möglich zu geben ;)

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Ich versuche noch einmal mein anliegen mitzuteilen.

    Es gibt 2 Dateien die ich habe, die müssen beide im Netzwerk an jeden Rechner gebracht werden.
    Das kann ich über Excel machen (da habe ich die Hostnamen, keine IP oder MAC) und da dann vom Server verteilen lassen, oder
    Ich schreibe ein Script (siehe oben) wo ich diese Datei dem User zuschicke und er das selber machen kann wenn er Aktiv am Rechner sitzt.

    Das verteilen des Script würde mir persönlich besser gefallen, weil da jeder User die möglichkeit selber hat es auszuführen wenn er gerade am Rechner sitzt (ich dann auch weniger Arbeit habe), aber da kriege ich leider den Fehler:

    "\\Host\Folder$\Folder\Folder\Daten.exe (27) : ==> Unable to execute the external program.:
    RunWait("Daten.exe", "x:",1)
    Das System kann die angegebene Datei nicht finden."

    Aus diesem grund, weil ich nicht dahinter komme wo das problem liegt, habe ich mir die möglichkeit überlegt ich kann doch auch die dateien verteilen lassen.

    Ich hoffe nun das mein problem jetzt deutlich rüber gekommen ist!

  • Geht mit Autoit sicher, aber das ist eigentlich eine typische Aufgabe für das Login Script. Damit sollte das wesentlich weniger Zeitaufwendig sein, nicht zuletzt da Du den komplizierten Umweg über die Excel Tabelle sparst. Hast Du da schonmal dran gedacht? Oder spricht da was dagegen?

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • wenn du damit meinst das es domänen user sind, ja spricht was dagegen.
    Es sind user die, wie auch die rechner, in einer Domäne sind, aber kein Server-Profil haben.
    Die user haben auch keine rechte auf der windows partition etwas zu schreiben oder zu ändern, ausser in specialen Ordner.

    oder meintest du was anderes?

  • Server gespeicherte Profil und Login Script sind zwei Unterschiedliche Dinge.

    Wenn Die Dateien dann in einen Bereich gespeichert werden soll, auf dem der User eigentlich keine Schreibberechtigung hat, hebelst Du Dir Deine Sicherheit u. U. wieder aus.

    Seltsam was Du da vor hast... Aber lesen sollen die Anwender die Datei schon können ? :D
    Ich probiers heute abend mal, wenn ich Zeit finde. Das sollte ziemlich leicht sein.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • das was kopiert wird, ist ein script was beim runter fahren ausgeführt wird!also über gpedit
    die user müssen das nicht lesen.

    ich sage euch alles was ihr wissen wollt, aber ich dachte nicht das es wichtig ist was kopiert werden muss deswegen habe ich das nicht erwähnt!

  • @Psyche: Es ist nicht wichtig, welche Dateiarten kopiert wird. Aber meiner Meiunung nach ist es trotzdem blödsinn an der Sicherheitsrichtlinien mit Dateien zu schrauben ! Die Gruppenrichtlinien verwaltet man immernich am besten über eine GPO im AD. Naja trotzdem hier ein Lösungsansatz.

    So funktioniert es bei mir. Jaja nicht schön, aber läuft.....
    Du musst nur die Namen deiner Excel Tabelle in die pc.txt speichern. Dann arbeitet er jeden PC Namen nacheinander ab und kopiert die beiden angegebenen Dateien auf die Rechner.

    Franz

    [autoit]

    #include <Array.au3>
    #include <File.au3>
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.12.1
    Author: franzp

    Script Function:


    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    Global $user = InputBox("Username", "", "Administrator")
    Global $pwd = InputBox("Password", "", "Password")
    Global $Domain = InputBox("Domain", "", "")

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

    Global $driveletter = InputBox("Driveletter zu temp mappen", "m:", "m:")
    if FileExists($driveletter) Then Exit

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

    Global $dest_folder = "\work"

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

    $sourcefile1= FileOpenDialog("erste Datei wählen", "c:\", "all (*.*)")
    If @error Then MsgBox(4096,"","No File(s) chosen")

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

    $sourcefile2= FileOpenDialog("zweite Datei wählen", "c:\", "All (*.*)")
    If @error Then MsgBox(4096,"","No File(s) chosen")

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

    Global $linkfile = @ScriptDir & "\pc.txt"
    Global $array[1]

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

    Global $destfile1 = StringSplit($sourcefile1, "\")
    $temp0 = UBound($destfile1) -1
    $destfile1 = _ArrayToString($destfile1, "", $temp0, $temp0)

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

    Global $destfile2 = StringSplit($sourcefile2, "\")
    $temp2 = UBound($destfile2) -1
    $destfile2 = _ArrayToString($destfile2, "", $temp2, $temp2)

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

    $file = FileOpen($linkfile, 0)
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    _ArrayAdd($array, $line)
    Wend
    FileClose($file)

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

    $i = 1
    for $i = 1 to UBound($array) -1
    DriveMapAdd($driveletter,"\\" & $array[$i] & "\c$" & $dest_folder, 0, $user, $pwd)
    ;DriveMapAdd($driveletter,"\\" & $array[$i] & $dest_folder, 0, $user, $pwd)
    if @error Then MsgBox(16, "Error", "Map Error bei PC : " & $array[$i])
    FileCopy($sourcefile1, $driveletter & $destfile1)
    if @error Then MsgBox(16, "Error", "Copy Error")
    FileCopy($sourcefile2, $driveletter & $destfile2)
    if @error Then MsgBox(16, "Error", "Copy Error")
    DriveMapDel($driveletter)
    Next

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

    $counter = _FileCountLines($linkfile)
    MsgBox(64, "", "Es wurde versucht die Dateien :" & $counter & " mal zu kopieren.", 2)

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

    Exit

    [/autoit]

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    2 Mal editiert, zuletzt von franzp (8. September 2008 um 21:57)