Außer das eine leere body.html aufgeht passiert hier leider recht wenig.
Beiträge von chip
-
-
Ups wusste das ich was vergessen habe. Die Wake.exe bekommst hier:http://masterbootrecord.de/english/wakeup.php
-
Hi,
habe schon einige UDFs nun gefunden mit deren Hilfe man einen Post an eine Webseite schicken kann. Problem ist allerdings das diese alle weder selbst einen funktion haben um einen Proxy mit User und PW zu setzen noch HttpSetProxy berücksichtigen.
Gib es irgendeine UDF die diese zwei Kriterien (Post + Proxyauth) erfüllt?
-
Nun dann wäre es doch sinniger anhand des Standartgateways zu entscheiden ob und wenn ja welcher DC genommen wird.
-
Schau dir das Script aus der Hilfe mal an:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ProgressConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
[/autoit] [autoit][/autoit] [autoit]
Local $progressbar1, $progressbar2, $button, $wait, $s, $msg, $m
GUICreate("My GUI Progressbar", 220, 100, 100, 200)
$progressbar1 = GUICtrlCreateProgress(10, 10, 200, 20)
GUICtrlSetColor(-1, 32250); not working with Windows XP Style
$progressbar2 = GUICtrlCreateProgress(10, 40, 200, 20, $PBS_SMOOTH)
$button = GUICtrlCreateButton("Start", 75, 70, 70, 20)
GUISetState()$wait = 20; wait 20ms for next progressstep
[/autoit]
$s = 0; progressbar-saveposition
Do
$msg = GUIGetMsg()
If $msg = $button Then
GUICtrlSetData($button, "Stop")
For $i = $s To 100
If GUICtrlRead($progressbar1) = 50 Then MsgBox(0, "Info", "The half is done...", 1)
$m = GUIGetMsg()
If $m = -3 Then ExitLoop
If $m = $button Then
GUICtrlSetData($button, "Next")
$s = $i;save the current bar-position to $s
ExitLoop
Else
$s = 0
GUICtrlSetData($progressbar1, $i)
GUICtrlSetData($progressbar2, (100 - $i))
Sleep($wait)
EndIf
Next
If $i > 100 Then
; $s=0
GUICtrlSetData($button, "Start")
EndIf
EndIf
Until $msg = $GUI_EVENT_CLOSE
EndFunc ;==>ExampleWobei das mit FileInstall nicht gehen dürfte, weil diese Dateien vor dem Ausführen des eigentlichen Scriptes entpackt werden.
-
So hier nun der Angeküngite erste Release von Hephaistos. Hier nochmal die Beschreibung dazu aus dem Entwicklungsthread:
Spoiler anzeigen
Hallo,
ich möchte euch kurz etwas vorstellen an dem ich bereits seit Anfang Juli arbeite und es nun auch bereits auf über 60 Rechnern erfolgreich im Einsatz habe.
Es geht um ein von mir auf Hephaistos getaufte Softwareverteilung die vollkommen über Autoit realisiert wurde.
Der Grund warum ich eine Eigenentwicklung gemacht habe und nicht ein bereits fertiges Produkt genommen habe lässt sich in drei Punkten darlegen:
- Die meisten Softwareverteilungen kosten extrem viel und haben mehr Funktionen als ich brauche.
- Ein Großteil benötigt zwingt eine ADS wodurch z.B. Laptops die nicht in der ADS sind aber im gleichen Netzwerk nicht versorgt werden können.
- Bei vielen werden Router im Netzwerk nicht unterstützt.Aus diesen Gründen ist Hephaistos entstanden.
Es ist eine Client-Server-Anwendung die es ermöglicht Autoitscirpte oder auch sonstige Automatisierungen wie MSI auf Rechner zu installieren.
Auf den Clients muss lediglich eine install.exe ausgeführt werden die dann die aktuelle Version der Clientsoftware auf den Rechner installiert. Bei jedem Anmelden an dem Rechner wird geprüft ob eine neuere Version der Clientsoftware verfügbar ist und wenn ja wir diese im Hintergrund installiert. Von diese Aktualisierung bekommt der Benutzer nichts mit was es ermöglich auch im laufenden Alltagsbetrieb neue Versionen des Clients zu verteilen.Die Clients melden sich nach der Anmeldung beim Server und falls sie dort noch nicht bekannt sind landen sie in einer neutralen Gruppe. Der Rechner wird unter anderem Anhang seine MAC Identifiziert wodurch es auch ohne Probleme möglich ist den Namen eines Rechners zu ändern ohne das es Probleme mit der Installierten Software gibt.
Es können beliebig viele Gruppen, denen Rechner zugewiesen werden, erstellt werden. Software kann sowohl Gruppen als auch nur einzelnen Rechner zugewiesen werden.
Die zu verteilenden Software wird automatisch durch die Adminkonsole erkannt. Wobei hier ebenfalls automatisch darauf hingewiesen wir ob nur ein Installations- oder nur eine Deinstallationscript vorhanden ist. Oder eben auch ob man es sowohl deinstallieren auch als installieren kann oder keines von beidem. Das ganze wird durch eindeutige Icons vor den Namen der Programme angezeigt und ist sofort auf einen Blick überschaubar.
Es ist auch möglich einzelnen Rechner oder ganze Gruppen Herunterzufahren, Neuzustarten oder Aufzuwecken.
Es ist auch Möglich zu aktivieren das nach dem Neustart der Rechner ein bestimmter Account automatisch eingeloggt wird. Allerdings ist das ein Punkt der leider nur unschön über die ADS zu lösen ist indem man dort ein entsprechendes Template hinterlegt dem man dann einen User zuweißt. Diese Funktion ist also nicht wirklich Massentauchglich.
Zurzeit bin ich noch dabei die Möglichkeit einzubauen das man Regeln definieren wie z.B. das wenn ein Programm zur Installation markiert ist ein anderes zwingend auch mit installiert werden muss usw.
Das ganze läuft zwar schon wie gesagt Erfolgreich auf über 60 Rechner und diese wurden auch komplett nur über Hephaistos mit Software versorgt aber es sind noch einige Ideen und Punkte die ich noch ändern will/muss.
Wie bei jeder Software braucht es erstmal ein klein wenig Arbeit zum einrichten aber danach ist die Verteilung/Aktuallisierung von Hepheistos zu 99% automatisch durchführbar. Es ist zu sagen das das ganze aktuell allerdings noch mit einigen RunAs Befehlen arbeiten in der auch die ADS benötigt wird von daher ist es nur bei vorhandensein einer ADS lauffähig (Wird noch geändert). Es muss allerdings nur der Rechner der als Server benutzt werden soll in einer ADS sein die Clientrechner müssen dies nicht!
So hier nun die Anleitung zur Serverinstallation:
1. Erstellt auf dem Rechner der als Server arbeiten soll eine Netzwerkfreigabe auf einen Ordner
2. Erstellt einen Benutzer der Zugriff auf diese Freigabe und gleichzeitig auch Adminrechte auf den zu versorgenden Clients hat.
3. In das Freigabeverzeichniss kommen folgende Dateien (Achtung vorher die Variablen noch anpassen sonst geht nichts ;))run.exe
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Author: Kai Forstner (chip)Copyright (C) 2010 Kai Forstner (chip)
[/autoit] [autoit][/autoit] [autoit]This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
[/autoit] [autoit][/autoit] [autoit]This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
[/autoit] [autoit][/autoit] [autoit]You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$admin = "admin"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$passwort = "adminpw"
$ads = "ads"
$clientinstall = "C:\Programme\install\"RunAs($admin, $ads, $passwort, 1, $clientinstall & "client.exe")
[/autoit]
client.exeSpoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Author: Kai Forstner (chip)Copyright (C) 2010 Kai Forstner (chip)
[/autoit] [autoit][/autoit] [autoit]This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
[/autoit] [autoit][/autoit] [autoit]This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
[/autoit] [autoit][/autoit] [autoit]You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>
#include <_GetIntersection.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>$admin = "admin"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$passwort = "admin"
$ads = "ads"
$clientinstall = "C:\Programme\install\"
$serverip = "193.196.72.5"
$freigabe = "ProgrammeAutoit$"$iWidth = @DesktopWidth
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$iHeight = @DesktopHeight
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", $iWidth, $iHeight, 0, 0, $WS_POPUP)
$Label1 = GUICtrlCreateLabel("", $iWidth / 2 - 200, $iHeight / 2 - 50, 400, 36, $SS_CENTER)
GUICtrlSetFont(-1, 20, 400, 0, "Arial")
$Progress1 = GUICtrlCreateProgress($iWidth / 2 - 150, $iHeight / 2 - 10, 300, 17)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###Func _GetMACFromIP($sIP = @IPAddress1, $mode = 1)
[/autoit] [autoit][/autoit] [autoit]
Local $MAC, $MACSize
Local $i, $s, $r, $iIP
$MAC = DllStructCreate("byte[6]")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize, 1, 6)
$r = DllCall("Ws2_32.dll", "int", "inet_addr", _
"str", $sIP)
$iIP = $r[0]
$r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
$s = ""
If $mode = 0 Then
For $i = 0 To 5
$s &= Hex(DllStructGetData($MAC, 1, $i + 1), 2)
NextElseIf $mode = 1 Then
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To 5
If $i Then $s = $s & ":"
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
ElseIf $mode = 2 Then
For $i = 0 To 5
If $i Then $s = $s & "-"
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
EndIf
Return $s
EndFunc ;==>_GetMACFromIPDo
[/autoit] [autoit][/autoit] [autoit]
Local $macadresse = ""
$macadresse = _GetMACFromIP()
Until $macadresse <> ""$text = @IPAddress1 & "#" & $macadresse & "#" & @ComputerName
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Empfaenger_IP = $serverip
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Port = 33891TCPStartup()
[/autoit] [autoit][/autoit] [autoit]
$ConnectedSocket = TCPConnect($Empfaenger_IP, $Port)
$connecttimmer = 100
Do
$recv = TCPRecv($ConnectedSocket, 2048)
Sleep(100)If $connecttimmer = 0 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Exit
EndIf
$connecttimmer = $connecttimmer - 1
Until $recv <> ""BlockInput(1)
[/autoit] [autoit][/autoit] [autoit]TCPSend($ConnectedSocket, $text)
[/autoit] [autoit][/autoit] [autoit]
Sleep(2000)TCPShutdown()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]DriveMapAdd("X:", "\\" & $serverip & "\" & $freigabe, 8, $ads & "\" & $admin, $passwort)
[/autoit] [autoit][/autoit] [autoit]DriveMapGet("N:")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$localini = IniRead($clientinstall & "client.ini", "Client", "Version", "0")
[/autoit] [autoit][/autoit] [autoit]
$remotini = IniRead("\\" & $serverip & "\" & $freigabe & "\client.ini", "Client", "Version", "0")If $localini <> $remotini Then
[/autoit] [autoit][/autoit] [autoit]
$pid = RunAsWait($admin, $ads, $passwort, 0, "\\" & $serverip & "\" & $freigabe & "\install.exe")
EndIfGUICtrlSetData($Progress1, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Label1, "Software wird überprüft")
GUISetState(@SW_SHOW,$Form1)$sSQliteDll = _SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$remotedb = _SQLite_Open('X:\datenbank.db')Dim $Query = "", $Zeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query($remotedb, "SELECT kategorie FROM Rechner WHERE mac = '" & $macadresse & "'", $Query)
While _SQLite_FetchData($Query, $Zeile) = $SqlITE_OK
For $element In $ZeileDim $programmQuery = "", $programmZeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query($remotedb, "SELECT programmname FROM Zuweisenkategorie WHERE kategorie = '" & $element & "'", $programmQuery)Dim $count = 0
[/autoit] [autoit][/autoit] [autoit]
Dim $programme[1]
While _SQLite_FetchData($programmQuery, $programmZeile) = $SqlITE_OK
For $programmelement In $programmZeile
ReDim $programme[$count + 1]
$programme[$count] = $programmelement
$count = $count + 1
Next
WEndDim $programmQuery = "", $programmZeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query($remotedb, "SELECT programmname FROM Zuweisenrechner WHERE rechnername = '" & @ComputerName & "'", $programmQuery)While _SQLite_FetchData($programmQuery, $programmZeile) = $SqlITE_OK
[/autoit] [autoit][/autoit] [autoit]
For $programmelement In $programmZeile
ReDim $programme[$count + 1]
$programme[$count] = $programmelement
$count = $count + 1
Next
WEndNext
[/autoit] [autoit][/autoit] [autoit]
WEnd_SQLite_Close($remotedb)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$localdb = _SQLite_Open($clientinstall & 'local.db')
[/autoit] [autoit][/autoit] [autoit]$strCREATE = _
[/autoit] [autoit][/autoit] [autoit]
"CREATE TABLE [Programme] (" & _
"[id] INTEGER PRIMARY KEY NOT NULL," & _
"[programmname] VARCHAR[50] NULL)"
If _SQLite_Exec($localdb, $strCREATE) <> $SqlITE_OK ThenEndIf
[/autoit] [autoit][/autoit] [autoit]Dim $localprogrammQuery = "", $localprogrammZeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query($localdb, "SELECT programmname FROM Programme WHERE id > 0 ", $localprogrammQuery)Dim $count = 0
[/autoit] [autoit][/autoit] [autoit]
Dim $localprogramme[1]
While _SQLite_FetchData($localprogrammQuery, $localprogrammZeile) = $SqlITE_OK
For $localprogrammelement In $localprogrammZeile
ReDim $localprogramme[$count + 1]
$localprogramme[$count] = $localprogrammelement
$count = $count + 1
Next
WEnd_SQLite_Close($localdb)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Dim $install[1]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $uninstall[2]
$ret = _GetIntersection($programme, $localprogramme, 0, ' ')GUICtrlSetData($Progress1, 40)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Label1, "Software wird deinstalliert")For $i = 0 To UBound($ret) - 1
[/autoit] [autoit][/autoit] [autoit]
If $ret[$i][2] <> '' Then
$pid = RunAsWait($admin, "ads", $passwort, 0, "\\" & $serverip & "\" & $freigabe & "\" & $ret[$i][2] & "\uninstall.exe")
ProcessWaitClose($pid)$localdb = _SQLite_Open($clientinstall & 'local.db')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "DELETE FROM Programme WHERE programmname = '" & $ret[$i][2] & "'")
_SQLite_Close($localdb)
EndIf
NextGUICtrlSetData($Progress1, 80)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Label1, "Software wird installiert")
BlockInput(0)
For $i = 0 To UBound($ret) - 1
If $ret[$i][1] <> '' Then
$pid = RunAsWait($admin, "ads", $passwort, 0, "\\" & $serverip & "\" & $freigabe & "\" & $ret[$i][1] & "\install.exe")
ProcessWaitClose($pid)$localdb = _SQLite_Open($clientinstall & 'local.db')
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO Programme (id, programmname) VALUES (NULL, '" & $ret[$i][1] & "')")
_SQLite_Close($localdb)
EndIf
Next
BlockInput(1)GUICtrlSetData($Progress1, 100)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Label1, "Aktuallisierung wird beendet")_SQLite_Shutdown()
[/autoit]
DriveMapDel("X:")
BlockInput(0)scratch.bat
Spoiler anzeigen
client.ini
Spoiler anzeigen
[autoit][Client]
[/autoit]
Version=1.1.7Ich weiß ist bisschen Arbeit aber wie gesagt braucht ihr das nur einmal machen und dann nie wieder :).
4. Jetzt kommt das Herzstück, der eigentliche Server. Startet folgende Datei (Variablen anpassen nicht vergessen) auf dem Server.
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Author: Kai Forstner (chip)Copyright (C) 2010 Kai Forstner (chip)
[/autoit] [autoit][/autoit] [autoit]This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
[/autoit] [autoit][/autoit] [autoit]This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
[/autoit] [autoit][/autoit] [autoit]You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>$freigabe = "H:\Packages\ProgrammeAutoit\"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Local $sSQliteDll
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$sSQliteDll = _SQLite_Startup()
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
Exit -1
EndIf
ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CR)_SQLite_Open($freigabe & 'datenbank.db')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$strCREATE = _
[/autoit] [autoit][/autoit] [autoit]
"CREATE TABLE [Rechner] (" & _
"[id] INTEGER PRIMARY KEY NOT NULL," & _
"[ip] VARCHAR[15]NULL," & _
"[mac] VARCHAR[17] NULL," & _
"[name] VARCHAR[50] NULL," & _
"[kategorie] VARCHAR[50] NULL)"
If _SQLite_Exec(-1, $strCREATE) <> $SQLITE_OK ThenEndIf
[/autoit] [autoit][/autoit] [autoit]$strCREATE = _
[/autoit] [autoit][/autoit] [autoit]
"CREATE TABLE [Zuweisenrechner] (" & _
"[id] INTEGER PRIMARY KEY NOT NULL," & _
"[programmname] VARCHAR[50] NULL," & _
"[rechnername] VARCHAR[50] NULL)"
If _SQLite_Exec(-1, $strCREATE) <> $SQLITE_OK ThenEndIf
[/autoit] [autoit][/autoit] [autoit]$strCREATE = _
[/autoit] [autoit][/autoit] [autoit]
"CREATE TABLE [Zuweisenkategorie] (" & _
"[id] INTEGER PRIMARY KEY NOT NULL," & _
"[programmname] VARCHAR[50] NULL," & _
"[kategorie] VARCHAR[50] NULL)"
If _SQLite_Exec(-1, $strCREATE) <> $SQLITE_OK ThenEndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_SQLite_Close()
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Shutdown()TCPStartup()
[/autoit] [autoit][/autoit] [autoit]
$MainSocket = TCPListen(@IPAddress1, 33891, 100)While 1
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$ConnectedSocket = TCPAccept($MainSocket)
If $ConnectedSocket <> -1 Then ExitLoop
Sleep(100)
WEndTCPSend($ConnectedSocket, "1")
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$recv = TCPRecv($ConnectedSocket, 2048)
Sleep(100)
Until $recv <> ""_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Open($freigabe & '\datenbank.db')$empfang = StringSplit($recv, "#")
[/autoit] [autoit][/autoit] [autoit]Local $hQuery, $hZeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query(-1, "SELECT ip,name FROM Rechner WHERE mac = '" & $empfang[2] & "'", $hQuery)
_SQLite_FetchData($hQuery, $hZeile)
_SQLite_QueryFinalize($hQuery)$anzahl = UBound($hZeile)
[/autoit] [autoit][/autoit] [autoit]If $anzahl < 2 Then
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO Rechner (id, ip, mac, name, kategorie) VALUES (NULL, '" & $empfang[1] & "', '" & $empfang[2] & "', '" & $empfang[3] & "', 'keine')")
Else
_SQLite_Exec(-1, "UPDATE Rechner SET ip = '" & $empfang[1] & "', name = '" & $empfang[3] & "' WHERE mac ='" & $empfang[2] & "'")
EndIf_SQLite_Close()
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Shutdown()WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
TCPShutdown()_SQLite_Close()
[/autoit]
_SQLite_Shutdown()So das wars der Server ist nun bereit und wartet auf Clients.
Die Clientinstallation:
Die Clientinstalltion ist recht einfach. Nach anpassen der Variablen einfach folgende Datei auf dem Client starten. Nach einem neuanmelden am Rechner ist er bereit zum Softwareerhalt. Ich persönlich habe die Datei einfach eimal compiliert und im Rohimage (das ich zum schnellen Rechnerinstallieren nutze) in den Autostart gelegt. Hat einfach den Vorteil das ein neue Rechner immer direkt auch soweit ist Software zu bekommen ohne das ich per Hand noch etwas machen muss. Durch die scratch.bat die wir in die Freigabe bei der Serverinstallation gelegt haben wird die isntall.exe dann auch wieder automatisch nach der installation aus dem Autostart genommen.
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Author: Kai Forstner (chip)Copyright (C) 2010 Kai Forstner (chip)
[/autoit] [autoit][/autoit] [autoit]This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
[/autoit] [autoit][/autoit] [autoit]This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
[/autoit] [autoit][/autoit] [autoit]You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]$admin = "admin"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$passwort = "adminpw"
$ads = "ads"
$clientinstall = "C:\Programme\install\"
$serverip = "193.196.72.5"
$freigabe = "ProgrammeAutoit$"$PID = ProcessExists("client.exe")
[/autoit] [autoit][/autoit] [autoit]
If $PID Then ProcessClose($PID)DriveMapAdd("X:", "\\" & $serverip & "\" & $freigabe, 8, $ads & "\" & $admin, $passwort)
[/autoit]
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Autoit", "REG_SZ", $clientinstall & "run.exe")
FileCopy("\\" & $serverip & "\" & $freigabe & "\run.exe", $clientinstall & "run.exe", 9)
FileCopy("\\" & $serverip & "\" & $freigabe & "\client.exe", $clientinstall & "client.exe", 9)
FileCopy("\\" & $serverip & "\" & $freigabe & "\scratch.bat", $clientinstall & "scratch.bat", 9)
FileCopy("\\" & $serverip & "\" & $freigabe & "\client.ini", $clientinstall & "client.ini", 9)
DriveMapDel("X:")
RunAs($admin, $ads, $passwort, 0, $clientinstall & "scratch.bat")So das wars, der Sever läuft und die Clients sind bereit um Software zu erhalten. Doch nun werden sich wohl sicher einige Fragen wie man den nun die Software zuweist. Das geht recht einfach. Erstellt in der Freigabe für jedes Programm jeweils einen Ordner z.B. "Office 2007", "Adobe Reader" usw. In diese Ordner kommen nun die entsprechenden Setupdateien der Programme und euer Autoitinstallationsscript (Wie man so eines erstellt brauche ich wohl nicht erklären, sollte bekannt sein). Zu beachten ist lediglich das Script install.exe (bzw. wenn ihr es auch wieder deinstallieren wollt noch die datei uninstall.exe) zu nennen.
Nun könnt ihr über das Admininteface Rechner in Gruppen anordner, Software der ganzen Gruppen zuweißen, Software nur einzelnen Rechner zuweißen, Rechner neu starten usw.
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Author: Kai Forstner (chip)Copyright (C) 2010 Kai Forstner (chip)
[/autoit] [autoit][/autoit] [autoit]This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
[/autoit] [autoit][/autoit] [autoit]This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
[/autoit] [autoit][/autoit] [autoit]You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>
#include <GuiComboBox.au3>
#include <GuiTreeView.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>$serverip = "193.196.72.5"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$freigabe = "ProgrammeAutoit$"DriveMapAdd("X:", "\\" & $serverip & "\" & $freigabe)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form = GUICreate("Softwareverteilung Hephaistos", 985, 889, 167, 53)
$RechnerTreeView = GUICtrlCreateTreeView(8, 8, 353, 873, -1, $WS_EX_CLIENTEDGE)
GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM)
$Rechnername = GUICtrlCreateLabel("", 376, 16, 116, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUICtrlSetState(-1, $GUI_HIDE)
$Gruppe = GUICtrlCreateCombo("", 376, 48, 145, 25)
GUICtrlSetState(-1, $GUI_HIDE)
$Gruppeaendern = GUICtrlCreateButton("ändern", 528, 47, 75, 25, 0)
GUICtrlSetState(-1, $GUI_HIDE)
$programmtree = GUICtrlCreateTreeView(384, 88, 329, 617, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES, $WS_GROUP, $WS_TABSTOP))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM)
$nGruppe = GUICtrlCreateButton("neue Gruppe", 608, 47, 75, 25, 0)
GUICtrlSetState(-1, $GUI_HIDE)
$Speichern = GUICtrlCreateButton("speichern", 720, 88, 75, 25, 0)
GUICtrlSetState(-1, $GUI_HIDE)
$Pic1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\g-admin\Desktop\autoit3\loader.gif", 496, 288, 100, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_HIDE)
$Rechnerneustart = GUICtrlCreateButton("Neustarten", 857, 77, 115, 25, 0)
GUICtrlSetState(-1, $GUI_HIDE)
$Rechnerherunterfahren = GUICtrlCreateButton("Herunterfahren", 857, 107, 115, 25, 0)
GUICtrlSetState(-1, $GUI_HIDE)
$Rechnerwakeup = GUICtrlCreateButton("Wakeup", 857, 47, 115, 25, 0)
GUISetState(@SW_SHOW, $Form)
#EndRegion ### END Koda GUI section ###Func _dbopen()
[/autoit] [autoit][/autoit] [autoit]
Local $sSQliteDll
$sSQliteDll = _SQLite_Startup()
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
Exit -1
EndIf_SQLite_Open('X:\datenbank.db')
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_dbopenFunc _dbclose()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_SQLite_Close()
_SQLite_Shutdown()
EndFunc ;==>_dbcloseFunc _Programmliste($rechner, $typ)
[/autoit] [autoit][/autoit] [autoit]
$Programmliste = _FileListToArray("X:", "*", 2)
If @error = 1 Then
MsgBox(0, "", "Keine Programme gefunden")
$Programmliste[0] = 0
EndIfDim $Programmitem[1]
[/autoit] [autoit][/autoit] [autoit]
$x = 0
GUICtrlSetState($programmtree, $GUI_HIDE)
GUICtrlSetState($Pic1, $GUI_SHOW)
_GUICtrlTreeView_BeginUpdate($programmtree)
_GUICtrlTreeView_DeleteAll($programmtree)$listcount = 0
[/autoit] [autoit][/autoit] [autoit]
For $element In $Programmliste
If $listcount > 0 Then
ReDim $Programmitem[$x + 1]
$Programmitem[$x] = _GUICtrlTreeView_Add($programmtree, 0, $element)$uninstall = False
[/autoit] [autoit][/autoit] [autoit]
$install = FalseIf FileExists("\\" & $serverip & "\" & $freigabe & "\" & $element & "\uninstall.exe") Then
[/autoit] [autoit][/autoit] [autoit]
$uninstall = True
EndIfIf FileExists("\\" & $serverip & "\" & $freigabe & "\" & $element & "\install.exe") Then
[/autoit] [autoit][/autoit] [autoit]
$install = True
EndIfIf $install = False And $uninstall = False Then
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlTreeView_SetIcon($programmtree, $Programmitem[$x], "shell32.dll", 27)
ElseIf $install = False Then
_GUICtrlTreeView_SetIcon($programmtree, $Programmitem[$x], "shell32.dll", 24)
ElseIf $uninstall = False Then
_GUICtrlTreeView_SetIcon($programmtree, $Programmitem[$x], "shell32.dll", 31)
Else
_GUICtrlTreeView_SetIcon($programmtree, $Programmitem[$x], "shell32.dll", 13)
EndIf
_dbopen()
Dim $programmlisteQuery = "", $programmlisteZeile = ""If $typ = "rechner" Then
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query(-1, "SELECT id FROM Zuweisenrechner WHERE programmname = '" & $element & "' AND rechnername = '" & $rechner & "'", $programmlisteQuery)
Else
_SQLite_Query(-1, "SELECT id FROM Zuweisenkategorie WHERE programmname = '" & $element & "' AND kategorie = '" & $rechner & "'", $programmlisteQuery)
EndIf
While _SQLite_FetchData($programmlisteQuery, $programmlisteZeile) = $SqlITE_OK
For $programmlisteelement In $programmlisteZeile
_GUICtrlTreeView_SetChecked($programmtree, $Programmitem[$x])
Next
WEnd
_dbclose()
$x = $x + 1Else
[/autoit] [autoit][/autoit] [autoit]
$listcount = 1
EndIf
Next
_GUICtrlTreeView_EndUpdate($programmtree)
GUICtrlSetState($programmtree, $GUI_SHOW)
GUICtrlSetState($Pic1, $GUI_HIDE)Return $Programmitem
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ProgrammlisteFunc _Install($rechner, $programm)
[/autoit] [autoit][/autoit] [autoit]
Dim $id = $rechner_dbopen()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $installQuery = "", $installZeile = ""
_SQLite_Query(-1, "SELECT id FROM Rechner WHERE name = '" & $rechner & "'", $installQuery)
While _SQLite_FetchData($installQuery, $installZeile) = $SqlITE_OK
For $installelement In $installZeile
$id = $installelement
Next
WEndIf $id > 0 Then
[/autoit] [autoit][/autoit] [autoit]_SQLite_Exec(-1, "INSERT INTO Zuweisenrechner(id, programmname, rechnername) VALUES (NULL, '" & $programm & "', '" & $rechner & "')")
[/autoit] [autoit][/autoit] [autoit]Else
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO Zuweisenkategorie(id, programmname, kategorie) VALUES (NULL, '" & $programm & "', '" & $rechner & "')")
EndIf_dbclose()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_Install
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Gruppe($name)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $wert
_dbopen()
Dim $poolQuery = "", $poolZeile = ""
_SQLite_Query(-1, "SELECT kategorie FROM Rechner WHERE name = '" & $name & "'", $poolQuery)
While _SQLite_FetchData($poolQuery, $poolZeile) = $SqlITE_OK
For $poolelement In $poolZeile
$wert = $poolelement
Next
WEnd
_dbclose()
Return $wert
EndFunc ;==>_GruppeFunc _Rechnertreeviewupdate()
[/autoit] [autoit][/autoit] [autoit]
Dim $count = 2
Dim $rkategorie[1]_GUICtrlTreeView_BeginUpdate($RechnerTreeView)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlTreeView_DeleteAll($RechnerTreeView)
GUICtrlSetData($Gruppe, "")
Dim $poolQuery = "", $poolZeile = ""
_SQLite_Query(-1, "SELECT kategorie FROM Rechner WHERE id > 0 GROUP BY kategorie", $poolQuery)
While _SQLite_FetchData($poolQuery, $poolZeile) = $SqlITE_OKFor $poolelement In $poolZeile
[/autoit] [autoit][/autoit] [autoit]
ReDim $rkategorie[$count + 1]$rkategorie[$count] = $poolelement
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlComboBox_AddString($Gruppe, $poolelement)
$topitem = _GUICtrlTreeView_Add($RechnerTreeView, 0, $poolelement)Dim $rechnerQuery = "", $rechnerZeile = ""
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Query(-1, "SELECT name FROM Rechner WHERE kategorie = '" & $poolelement & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile
_GUICtrlTreeView_AddChild($RechnerTreeView, $topitem, $rechnerelement)
Next
WEnd
$count = $count + 1
Next
WEnd
_GUICtrlTreeView_EndUpdate($RechnerTreeView)
Return $rkategorie
EndFunc ;==>_RechnertreeviewupdateFunc _Rechnerneustart($typ, $name)
[/autoit] [autoit][/autoit] [autoit]
If $typ = "rechner" Then
RunWait(@ComSpec & " /c shutdown -r -f -m \\" & $name)
MsgBox(64, "Neustart", "Der Rechner " & $name & " wurde neu gestartet.", 2)
Else
_dbopen()
Dim $rechnerQuery = "", $rechnerZeile = ""
_SQLite_Query(-1, "SELECT name FROM Rechner WHERE kategorie = '" & $name & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile
RunWait(@ComSpec & " /c shutdown -r -f -m \\" & $rechnerelement)
Next
WEnd
_dbclose()
MsgBox(64, "Neustart", "Der Rechner der Gruppe " & $name & " wurden neu gestartet.", 2)
EndIf
EndFunc ;==>_RechnerneustartFunc _Rechnerherunterfahren($typ, $name)
[/autoit] [autoit][/autoit] [autoit]
If $typ = "rechner" Then
RunWait(@ComSpec & " /c shutdown -s -f -m \\" & $name)
MsgBox(64, "Herunterfahren", "Der Rechner " & $name & " wurde heruntergefahren.", 2)
Else
_dbopen()
Dim $rechnerQuery = "", $rechnerZeile = ""
_SQLite_Query(-1, "SELECT name FROM Rechner WHERE kategorie = '" & $name & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile
RunWait(@ComSpec & " /c shutdown -s -f -m \\" & $rechnerelement)
Next
WEnd
_dbclose()
MsgBox(64, "Herunterfahren", "Der Rechner der Gruppe " & $name & " wurden heruntergefahren.", 2)
EndIf
EndFunc ;==>_RechnerherunterfahrenFunc _Rechnerwakeup($typ, $name)
[/autoit] [autoit][/autoit] [autoit]
If $typ = "rechner" Then
_dbopen()
Dim $rechnerQuery = "", $rechnerZeile = ""
_SQLite_Query(-1, "SELECT mac FROM Rechner WHERE name = '" & $name & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile
$mac = StringReplace($rechnerelement, ":", "-")
Dim $rechnerQuery = "", $rechnerZeile = ""
_SQLite_Query(-1, "SELECT ip FROM Rechner WHERE name = '" & $name & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile
$broad = StringSplit($rechnerelement, ".")
RunWait(@ComSpec & " /c " & '"' & @ScriptDir & "\wake.exe" & '"' & " " & $mac & " " & $broad[1] & "." & $broad[2] & "." & $broad[3] & ".255")
Next
WEndNext
[/autoit] [autoit][/autoit] [autoit]
WEnd
_dbclose()
MsgBox(64, "Wakeup", "Der Rechner " & $name & " wurde aufgeweckt.", 2)
Else
_dbopen()
Dim $rechnerQuery = "", $rechnerZeile = ""
_SQLite_Query(-1, "SELECT mac FROM Rechner WHERE kategorie = '" & $name & "'", $rechnerQuery)
While _SQLite_FetchData($rechnerQuery, $rechnerZeile) = $SqlITE_OK
For $rechnerelement In $rechnerZeile$mac = StringReplace($rechnerelement, ":", "-")
[/autoit] [autoit][/autoit] [autoit]
Dim $wakeupQuery = "", $wakeupZeile = ""
_SQLite_Query(-1, "SELECT ip FROM Rechner WHERE mac = '" & $rechnerelement & "'", $wakeupQuery)
While _SQLite_FetchData($wakeupQuery, $wakeupZeile) = $SqlITE_OK
For $wakeupelement In $wakeupZeile
$broad = StringSplit($wakeupelement, ".")
RunWait(@ComSpec & " /c " & '"' & @ScriptDir & "\wake.exe" & '"' & " " & $mac & " " & $broad[1] & "." & $broad[2] & "." & $broad[3] & ".255")
Next
WEndNext
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEnd
_dbclose()
MsgBox(64, "Wakeup", "Die Rechner der Gruppe " & $name & " wurden aufgeweckt.", 2)
EndIf
EndFunc ;==>_Rechnerwakeup_dbopen()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$rkategorie = _Rechnertreeviewupdate()
_dbclose()$altrechnername = "alt"
[/autoit] [autoit][/autoit] [autoit]
While 1
$RechnerTreeView_selected = GUICtrlRead($RechnerTreeView, 1)$rechnerkategorie = False
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $poolelement In $rkategorie
If $poolelement = $RechnerTreeView_selected Then
$rechnerkategorie = True
ExitLoop
EndIf
NextIf $RechnerTreeView_selected = "0" Then
[/autoit] [autoit][/autoit] [autoit]ElseIf $altrechnername = $RechnerTreeView_selected Then
[/autoit] [autoit][/autoit] [autoit]ElseIf $rechnerkategorie = False Then
[/autoit] [autoit][/autoit] [autoit]
$typ = "rechner"$altrechnername = $RechnerTreeView_selected
[/autoit] [autoit][/autoit] [autoit]$Programmitem = _Programmliste($altrechnername, $typ)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($Rechnername, $RechnerTreeView_selected)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Rechnername, $GUI_SHOW)$rechnergruppe = _Gruppe($RechnerTreeView_selected)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GUICtrlComboBox_SelectString($Gruppe, $rechnergruppe)
GUICtrlSetState($Gruppe, $GUI_SHOW)
GUICtrlSetState($Gruppeaendern, $GUI_SHOW)
GUICtrlSetState($programmtree, $GUI_SHOW)
GUICtrlSetState($nGruppe, $GUI_SHOW)
GUICtrlSetState($Speichern, $GUI_SHOW)
GUICtrlSetState($Rechnerherunterfahren, $GUI_SHOW)
GUICtrlSetState($Rechnerneustart, $GUI_SHOW)
GUICtrlSetState($Rechnerwakeup, $GUI_SHOW)Else
[/autoit] [autoit][/autoit] [autoit]
$typ = "kategorie"$altrechnername = $RechnerTreeView_selected
[/autoit] [autoit][/autoit] [autoit]$Programmitem = _Programmliste($altrechnername, $typ)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($Rechnername, $RechnerTreeView_selected)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Rechnername, $GUI_SHOW)
GUICtrlSetState($Gruppe, $GUI_HIDE)
GUICtrlSetState($Gruppeaendern, $GUI_HIDE)
GUICtrlSetState($programmtree, $GUI_SHOW)
GUICtrlSetState($nGruppe, $GUI_HIDE)
GUICtrlSetState($Speichern, $GUI_SHOW)
GUICtrlSetState($Rechnerherunterfahren, $GUI_SHOW)
GUICtrlSetState($Rechnerneustart, $GUI_SHOW)
GUICtrlSetState($Rechnerwakeup, $GUI_SHOW)
EndIf$nMsg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Switch $nMsg
[/autoit] [autoit][/autoit] [autoit]
Case $GUI_EVENT_CLOSE
DriveMapDel("X:")
Exit
Case $nGruppe
$neueGruppe = InputBox("neue Gruppe", "Name der neuen Gruppe eingeben")
If @error = 1 Then
MsgBox(0, "Fehler", "Ein Fehler ist aufgetreten.")
Else
_dbopen()
_SQLite_Exec(-1, "UPDATE rechner SET kategorie = '" & $neueGruppe & "' WHERE name ='" & $RechnerTreeView_selected & "'")
$rkategorie = _Rechnertreeviewupdate()
_dbclose()
GUICtrlSetState($Rechnername, $GUI_HIDE)
GUICtrlSetState($Gruppe, $GUI_HIDE)
GUICtrlSetState($Gruppeaendern, $GUI_HIDE)
GUICtrlSetState($programmtree, $GUI_HIDE)
GUICtrlSetState($nGruppe, $GUI_HIDE)
EndIf
Case $Gruppeaendern
_dbopen()
_SQLite_Exec(-1, "UPDATE rechner SET kategorie = '" & GUICtrlRead($Gruppe) & "' WHERE name ='" & $RechnerTreeView_selected & "'")
$rkategorie = _Rechnertreeviewupdate()
_dbclose()
GUICtrlSetState($Rechnername, $GUI_HIDE)
GUICtrlSetState($Gruppe, $GUI_HIDE)
GUICtrlSetState($Gruppeaendern, $GUI_HIDE)
GUICtrlSetState($programmtree, $GUI_HIDE)
GUICtrlSetState($nGruppe, $GUI_HIDE)
Case $Speichern_dbopen()
[/autoit] [autoit][/autoit] [autoit]
If $typ = "rechner" Then
_SQLite_Exec(-1, "DELETE FROM Zuweisenrechner WHERE rechnername = '" & $RechnerTreeView_selected & "'")
Else
_SQLite_Exec(-1, "DELETE FROM Zuweisenkategorie WHERE kategorie = '" & $RechnerTreeView_selected & "'")
EndIf
_dbclose()For $programmitemelement In $Programmitem
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$pruef = _GUICtrlTreeView_GetChecked($programmtree, $programmitemelement)
If $pruef = True Then
$programmname = _GUICtrlTreeView_GetText($programmtree, $programmitemelement)_Install($RechnerTreeView_selected, $programmname)
[/autoit]
EndIf
Next
_Programmliste($RechnerTreeView_selected, $typ)
Case $Rechnerherunterfahren
_Rechnerherunterfahren($typ, $RechnerTreeView_selected)
Case $Rechnerneustart
_Rechnerneustart($typ, $RechnerTreeView_selected)
Case $Rechnerwakeup
_Rechnerwakeup($typ, $RechnerTreeView_selected)
EndSwitch
WEndHier die Wake.exe um PCs aufzuwecken: http://masterbootrecord.de/english/wakeup.php
Wenn es Fragen/Unklarheiten/Wünsche gibt einfach hier posten.
Sollte ihr das produktiv im Einsatz haben wäre ich über kleine Rückmeldung erfreut da mich das interessieren würde. -
Hat sich da nun was getan Stilgar hehe?
-
Gute Idee habs mal abgeändert.
-
Hab ja nichts von Torrentprotokoll geschrieben ;). Ich habe gesagt Torrentverfahren, das ist ein großer Unterschied. Vor allem wäre das Bittorrentprotokoll hier eher störend, da dieses auf großes Datenmengen ausgelegt ist und bei kleinen wie z.b. einem Autoitscript mehr bremst als beschleunigt. Macht ja auch wenig Sinn solch kleine Dateien nochmal in Pakete zu splitten.
-
Ja das ist klar. Ging mir darum ob Client sofort wieder gekickt werden wenn ein anderen mit TCPAccept angenommen wurde oder ob sie wirklich in einer Warteschlange bleiben.
-
Da ich das gleiche im Grunde für mein Softwaretool gemacht habe, nur halt Netzintern, ist das kein Problem in Autoit und auch keineswegs langsam.
-
PS: Falls du auf youtube oder so videos gesehn hast die sagen "342 euro an einem wochenende" oder "4323 euro im monat"
also mit diesem 100% sicherem system geld zu gewinnen indem man immer auf rot oder schwarz setzt.
Das ganze is beschiss. Das system funktioniert auf dauer nicht.
Es ist wie es immer heißt: Die Bank gewinnt immer!Nunja muss ich dir wiedersprechen, hab das selber mal eine Monat lang aus spaß getestet und immerhin mit einem Gewinn von 150€ raus gekommen :).
-
Nachdem sich meine Softwareverteilung Hephaistos , nach einer längeren Testphase, nun kurz vor dem Release befindet habe ich mir überlegt was ich als nächstes machen könnte. Die UDF-Database von Jautois, die ich übrigens echt klasse finde und hoffe das da bald noch einige UDFs mehr rein kommen, hat mich dabei auf eine Idee gebracht. In wie weit diese Idee nun nötig oder unnötig ist sei dahingestellt.
Es gibt doch viele Leute die sich die Mühe machen kleine oder auch große Skripte zu schreiben und diese unter anderem auch hier im Forum zu veröffentlichen. Was ich nun schade finde ist das diese Skripte doch recht schnell wieder in Vergessenheit geraten. Wenn man dann ein bestimmtes Skript braucht erinnert man sich meistens zwar noch, dass es so eines gibt aber nichtmehr wo. Oder noch schlimmer man weiß wo das Skript ist aber die Seite existiert nichtmehr und das Skript ist verloren.
Von daher werde ich mit Projekt „Autoit Script Sharing“ beginnen.
Das ganze wird im Peer to Peer Verfahren ablaufen. Mit Peer to Peer Verfahren ist gemeint das die Daten sich nicht auf einem zentralen Rechner befinden sondern sich die Clients untereinander austauschen. Ein Server ist in diesem Verfahren nur noch dazu da zu Listen welche Skripte verfügbar sind und von welchem Client diese zurzeit verfügbar sind.
Der Vorteil ist der, dass man nicht auf einen einzigen Server angewiesen ist. Man kann auch seinen eigenen Server aufmachen und z.b. nur Skripte unter seinen Freunden tauschen. Auch der Ausfall des Servers ist kein großes Problem da man schlicht auf einen anderen dann ausweichen kann.
Funktion des Servers:
- Listet Skripte die schon einmal im Netzwerk verteilt wurden mit einem eindeutigen MD5 Hash.
- Listet welche Clients, die aktuell online sind, welche Skripte verteilen
- Gibt eine Liste aller bekannten Skripte an Clients aus
- Gibt eine Liste der verfügbaren Quellen für an Skript an Clients weiterFunktion Client
- Verteilen von Skripten im Netzwerk mit Generierung von eindeutigem MD5 Hash
- Generiert einmaligen public + privat key
- Gibt public-key an anfragenden Client aus
- Verhandelt mit anderem Client einen Session-Key über RSA aus.
- Durchsuchen der im Netzwerk bekannten Skripte -
Everest Casino ist ein Onlinecasino also gilt folgendes:
ZitatFolgende Inhalte sind nicht erwünscht oder gar komplett verboten. Das Team behält es sich ausdrücklich vor, die Umsetzung der Regeln je nach Schweregrad zu
verwarnen, zu löschen oder gar komplett zu sperren.- Bots für Spiele jeglicher Art, insbesondere Onlinespiele und ganz besonders Silkroad Online sowie World of Warcraft
-
So wollte kurz mitteilen, dass sich das ganze nun langsam dem ersten Release nähert. Es fehlt nur noch eine kleine Installationsroutine und dann wird die erste Version releasd werden :). Inzwischen war auch ein Test auf Vista und Win 7 erfolgreich möglich. Zu erwähnen wäre auch noch da inzwischen rund 90 Rechner nur 10 Laptops bei mir mit Hephaistos mit Software versorgt werden. Etwa 40 davon habe ich auch gleichzeitig neu aufgesetzt, im Anschluss mit Software versorgt und um ehrlich zu sein ich war doch überrascht wie Problemlos und zeitgleich das funktioniert hat. Viele Anwender wollen das garnichtmehr missen, da es einfach wesentlich einfacher ist als z.b. mit MSI über ADS.
Im Anhang noch ein Bild vom Adminmenu.
-
Hi,
bei TCPListen gibt es ja den Parameter "MaxPendingConnection". Wollte nun wissen ob das so richtig ist wie ich das verstanden habe.
Wenn man bei "MaxPendingConnection" z.B. den Wert 100 eingibt können sich 100 Clients zum Server verbinden. Diese reihen sich dann in einer Warteschlange ein und können nacheinander mit TCPAccept abgearbeitet werden.
Also so:
Spoiler anzeigen
[autoit]TCPStartup()
[/autoit] [autoit][/autoit] [autoit]
$MainSocket = TCPListen(@IPAddress1, 33891, 100)While 1
[/autoit] [autoit][/autoit] [autoit]
$ConnectedSocket = TCPAccept($MainSocket)
If $ConnectedSocket <> -1 Then ExitLoop
WendTCPShutdown()
[/autoit]Wenn nun also sich drei Clients zum Server verbinden wird der erste in der Schleife mit TCPAccept angenommen und die anderen zwei Warten in der Warteschlange. Ist dann der erste Client abgearbeitet wird mit TCPAccept dann der nächste Client aus der Warteschlange geholt.
Hab ich das so richtig verstanden?
-
Hi,
hab eine kleines Script geschrieben das eine Datei oder einen ganzen Ordner, der im selben Verzeichniss wie das Script liegt, packt und verschlüsselt. Als Verschlüsselung wird der Tiny Encryption Algorithm mit einem 128-bit Schlüssel und der Cipher Block Chaining Mode verwendet.
Sichern:
Spoiler anzeigen
[autoit]FileInstall("C:\crypt\7z.exe", "C:\Windows\Temp\7z.exe")
[/autoit] [autoit][/autoit] [autoit]
FileInstall("C:\crypt\crypt.exe", "C:\Windows\Temp\crypt.exe")$ordner = "Kalender" ;Ordner oder Datei die gesichert werden soll
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$dateiname = "logo.jpg" ;Wie die Datei am Ende heißen soll
$passwort = "test" ;Passwort für das zip Archiv
$key = "secret" ;Schlüssel der VerschlüsselungRunWait(@ComSpec & ' /c ' & "C:\Windows\Temp\7z.exe a -tzip -p" & $passwort & " C:\Windows\Temp\" & $dateiname & " " & @ScriptDir & "\" & $ordner, @ScriptDir, @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]sleep(100)
[/autoit] [autoit][/autoit] [autoit]RunWait(@ComSpec & ' /c ' & "C:\Windows\Temp\crypt.exe -encrypt -key " & $key & " -infile C:\Windows\Temp\" & $dateiname & " -outfile C:\Windows\Temp\" & $dateiname, @ScriptDir, @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]sleep(100)
[/autoit] [autoit][/autoit] [autoit]FileCopy("C:\Windows\Temp\" & $dateiname, @ScriptDir & "\*.*",8)
[/autoit] [autoit][/autoit] [autoit]sleep(100)
[/autoit] [autoit][/autoit] [autoit]FileDelete("C:\Windows\Temp\7z.exe")
[/autoit]
FileDelete("C:\Windows\Temp\crypt.exe")
FileDelete("C:\Windows\Temp\" & $dateiname)Entsichern:
Spoiler anzeigen
[autoit]FileInstall("C:\crypt\7z.exe", "C:\Windows\Temp\7z.exe")
[/autoit] [autoit][/autoit] [autoit]
FileInstall("C:\crypt\crypt.exe", "C:\Windows\Temp\crypt.exe")$dateiname = "logo.jpg" ;Name der geschützten Datei
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$passwort = "test" ;Passwort für das zip Archiv
$key = "secret" ;Schlüssel der VerschlüsselungRunWait(@ComSpec & ' /c ' & "C:\Windows\Temp\crypt.exe -decrypt -key " & $key & " -infile " & @ScriptDir & "\" & $dateiname & " -outfile " & @ScriptDir & "\entsichert.zip", @ScriptDir, @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]sleep(100)
[/autoit] [autoit][/autoit] [autoit]RunWait(@ComSpec & ' /c ' & "C:\Windows\Temp\7z.exe x -y -o"& @ScriptDir & "\ -p" & $passwort & " " & @ScriptDir & "\entsichert.zip" , @ScriptDir, @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]sleep(100)
[/autoit] [autoit][/autoit] [autoit]FileDelete("C:\Windows\Temp\7z.exe")
[/autoit]
FileDelete("C:\Windows\Temp\crypt.exe")
FileDelete(@ScriptDir & "\" & $dateiname)
FileDelete(@ScriptDir & "\entsichert.zip")Es werden noch die zwei Dateien 7z.exe und crypt.exe (von codeode) benötigt welche ich angehängt habe.
-
Aus den paar Codesnipseln kann man wenig sagen. Würde einfach mal sagen das keine Schleife hast:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
Do
$msg = GUIGetMsg()Until $msg = $GUI_EVENT_CLOSE
[/autoit] -
Schau die mal die UDF an: http://www.autoitscript.com/forum/index.php?showtopic=17032
Ist allerdings von 2005 also keine Ahnung ob sie noch geht.
-
Danke werde ich mal testen. Der Grund warum ich die GUI nachträglich in der Größe änder will ist der, dass ich da Bilder und Text reinladen lasse der unterschiedlich groß ist und ich dementsprechen die GUI anpassen muss.