Project by FirePanther
1c6bdde2e1dc69a5ffb9533dea92be7f

Nicht angemeldet.

AutoIt-Pastebin

Auf AutoIt-Pastebin können Sie Ihre Skripte und Codeschnipsel einfügen und anderen eine farblich hervorgehobene Seite zeigen

ThinClient Manager - Eintrag von Mahagon

Details:
Das Skript wird niemals automatisch gelöscht.
Es wurde am 09.03.11 um 15:47 Uhr veröffentlicht und hatte bisher 359 Besucher.
  Die farbliche Hervorhebung wurde deaktiviert, da der Quelltext zu lang ist.

#include <SQLite.au3> #include <SQLite.dll.au3> #include <GuiListView.au3> #include <GUIConstantsEx.au3> Local Const $sDBDir = @ScriptDir & "\Datenbank\" Local Const $sDBName = "ThinClientManager" Local Const $sBroadcast = "10.1.255.255" Local $hQuery, $aRow, $aResult, $iRows, $iColumns #Region ### START Koda GUI section ### Form= $hGui = GUICreate("ThinClientManager", 799, 614, Default, Default) $cmMenue = GUICtrlCreateMenu("Menü") $cmMenueBeenden = GUICtrlCreateMenuItem("Beenden", $cmMenue) $cmEinstellungen = GUICtrlCreateMenu("Einstellungen") $cmEinstellungenClient = GUICtrlCreateMenu("ThinClients", $cmEinstellungen) $cmEinstellungenClientAdd = GUICtrlCreateMenuItem("Hinzufügen", $cmEinstellungenClient) $cmEinstellungenClientDel = GUICtrlCreateMenuItem("Entfernen", $cmEinstellungenClient) $cmEinstellungenBefehle = GUICtrlCreateMenu("Befehle", $cmEinstellungen) $cmEinstellungenBefehleAdd = GUICtrlCreateMenuItem("Hinzufügen", $cmEinstellungenBefehle) $cmEinstellungenBefehleDel = GUICtrlCreateMenuItem("Entfernen", $cmEinstellungenBefehle) $cRoomCombo = GUICtrlCreateCombo("Raum 1", 9, 8, 303, 25) GUICtrlSetData($cRoomCombo, "Raum 2|Raum 3|Raum 4", "Raum 1") GUICtrlSetState($cRoomCombo,32) If $CmdLine[0] = 0 Then $sRoomlisted = GUICtrlRead($cRoomCombo) Else $sRoomlisted = $CmdLine[1] EndIf $cListViewThinClients = GUICtrlCreateListView("", 9, 40, 300, 539) $hListViewThinClients = GUICtrlGetHandle($cListViewThinClients) _GUICtrlListView_AddColumn($hListViewThinClients, "Hostname", 270) $cListViewCommands = GUICtrlCreateListView("", 329, 40, 300, 539) $hListViewCommands = GUICtrlGetHandle($cListViewCommands) _GUICtrlListView_AddColumn($hListViewCommands, "Befehl", 270) $cRun = GUICtrlCreateButton("Befehl ausführen", 648, 48, 137, 57) #EndRegion ### END Koda GUI section ### $sSQliteDll = _SQLite_Startup() If @error Then MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!") _SQLite_Close() _SQLite_Shutdown() Exit EndIf If Not FileExists($sDBDir) Then DirCreate($sDBDir) $hSQliteDB = _SQLite_Open($sDBDir & $sDBName & ".sql") If Not _SQLite_ErrMsg($hSQliteDB) = "not an Error" Then MsgBox(64, "Error", _SQLite_ErrMsg($hSQliteDB)) If Not _SQLite_Exec($hSQliteDB, "SELECT * FROM t_THINCLIENTS;", $hQuery) = $SQLITE_OK Then _SQLite_Exec($hSQliteDB, "BEGIN IMMEDIATE TRANSACTION") _SQLite_Exec($hSQliteDB, "CREATE TABLE t_THINCLIENTS (t_tHOSTNAME,t_tMACADRESS,t_tROOM);") _SQLite_Exec($hSQliteDB, "COMMIT TRANSACTION") _SQLite_QueryFinalize($hQuery) EndIf If Not _SQLite_Exec($hSQliteDB, "SELECT * FROM t_COMMANDS;", $hQuery) = $SQLITE_OK Then _SQLite_Exec($hSQliteDB, "BEGIN IMMEDIATE TRANSACTION") _SQLite_Exec($hSQliteDB, "CREATE TABLE t_COMMANDS (t_cCOMMAND,t_cCOMMANDNAME);") _SQLite_Exec($hSQliteDB, "COMMIT TRANSACTION") _SQLite_QueryFinalize($hQuery) EndIf If Not _SQLite_ErrMsg($hSQliteDB) = "not an Error" Then MsgBox(64, "Error", _SQLite_ErrMsg($hSQliteDB)) _UpdateThinClientlist() _UpdateBefehlelist() GUISetState(@SW_SHOW) AdlibRegister(_onlinecheck(), 10000) While True $nMsg = GUIGetMsg() Switch $nMsg Case -3, $cmMenueBeenden AdlibUnRegister(_onlinecheck()) _SQLite_Close() _SQLite_Shutdown() Exit Case $cRoomCombo _UpdateThinClientlist() Case $cmEinstellungenBefehleAdd $sBefehlNameReturn = InputBox("Befehl hinzufügen", "Geben Sie bitte den Anzeigenamen des Befehls ein", "Herunterfahren", Default, Default, Default, Default, Default, Default, $hGui) _SQLite_Query($hSQliteDB, "SELECT t_cCOMMANDNAME FROM t_COMMANDS WHERE t_cCOMMANDNAME = '" & $sBefehlNameReturn & "';", $hQuery) Select Case _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK MsgBox(48, "Warnung", $sBefehlNameReturn & @CRLF & " Name existiert bereits") Case $sBefehlNameReturn <> "" $sBefehlcmdReturn = InputBox("Befehl hinzufügen", "Geben Sie den Befehl ein, welcher ausgeführt werden soll", "shutdown -s -t 00 -f", Default, Default, Default, Default, Default, Default, $hGui) Select Case $sBefehlcmdReturn <> "" _SQLite_Exec($hSQliteDB, "BEGIN IMMEDIATE TRANSACTION") _SQLite_Exec($hSQliteDB, "SAVEPOINT BeforeAdd") $iRval = _SQLite_Exec($hSQliteDB, "INSERT INTO t_COMMANDS VALUES ('" & $sBefehlcmdReturn & "','" & $sBefehlNameReturn & "');") Select Case $iRval = $SQLITE_OK _SQLite_Exec($hSQliteDB, "RELEASE SAVEPOINT BeforeAdd") _SQLite_Exec($hSQliteDB, "COMMIT TRANSACTION") Case Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB), 0, $hGui) _SQLite_Exec($hSQliteDB, "ROLLBACK TRANSACTION TO SAVEPOINT BeforeAdd") EndSelect EndSelect EndSelect _SQLite_QueryFinalize($hQuery) _UpdateBefehlelist() Case $cmEinstellungenClientAdd $sThinClientNameReturn = InputBox("ThinClient hinzufügen", "Geben Sie bitte den Hostname des Thinclients ein", "R1TC1", Default, Default, Default, Default, Default, Default, $hGui) _SQLite_Query($hSQliteDB, "SELECT t_tHOSTNAME FROM t_THINCLIENTS WHERE t_tHOSTNAME = '" & $sThinClientNameReturn & "';", $hQuery) Select Case _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK MsgBox(48, "Warnung", $sThinClientNameReturn & @CRLF & " Name Existiert bereits") Case $sThinClientNameReturn <> "" $sThinClientMACReturn = InputBox("ThinClient hinzufügen", "Geben Sie bitte die MAC-Adresse des Thinclients ein" & @CRLF & "MAC muss das Format 78-E7-D1-B6-EC-55 haben!", "78-E7-D1-B6-EC-55", Default, Default, Default, Default, Default, Default, $hGui) $sThinClientROOMReturn = InputBox("ThinClient hinzufügen", "Geben Sie bitte die Raumnummer des Thinclients ein", 1, Default, Default, Default, Default, Default, Default, $hGui) Select Case $sThinClientROOMReturn <> 1 And $sThinClientROOMReturn <> 2 And $sThinClientROOMReturn <> 3 And $sThinClientROOMReturn <> 4 And $sThinClientROOMReturn <> 5 MsgBox(16, "Error", "Raum existiert nicht!", 0, $hGui) Case $sThinClientMACReturn <> "" _SQLite_Exec($hSQliteDB, "BEGIN IMMEDIATE TRANSACTION") _SQLite_Exec($hSQliteDB, "SAVEPOINT BeforeAdd") $iRval = _SQLite_Exec($hSQliteDB, "INSERT INTO t_THINCLIENTS VALUES ('" & $sThinClientNameReturn & "','" & $sThinClientMACReturn & "','" & $sThinClientROOMReturn & "');") Select Case $iRval = $SQLITE_OK _SQLite_Exec($hSQliteDB, "RELEASE SAVEPOINT BeforeAdd") _SQLite_Exec($hSQliteDB, "COMMIT TRANSACTION") Case Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB), 0, $hGui) _SQLite_Exec($hSQliteDB, "ROLLBACK TRANSACTION TO SAVEPOINT BeforeAdd") EndSelect EndSelect EndSelect _SQLite_QueryFinalize($hQuery) _UpdateThinClientlist() Case $cmEinstellungenClientDel $sThinClientNameReturn = InputBox("ThinClient Löschen", "Geben Sie bitte den Hostname des Thinclients ein", "HOSTNAME", Default, Default, Default, Default, Default, Default, $hGui) _SQLite_Query($hSQliteDB, "SELECT t_tHOSTNAME FROM t_THINCLIENTS WHERE t_tHOSTNAME = '" & $sThinClientNameReturn & "';", $hQuery) Select Case $sThinClientNameReturn = "" Case _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK _SQLite_QueryFinalize($hQuery) _SQLite_Exec($hSQliteDB, "BEGIN IMMEDIATE TRANSACTION") _SQLite_Exec($hSQliteDB, "SAVEPOINT BeforeDelete") $iRval = _SQLite_Exec($hSQliteDB, "DELETE FROM t_THINCLIENTS WHERE t_tHOSTNAME = '" & $sThinClientNameReturn & "';") Select Case $iRval = $SQLITE_OK _SQLite_Exec($hSQliteDB, "RELEASE SAVEPOINT BeforeDelete") _SQLite_Exec($hSQliteDB, "COMMIT TRANSACTION") MsgBox(0, "", "Löschen erfolgreich") Case Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB), 0, $hGui) _SQLite_Exec($hSQliteDB, "ROLLBACK TRANSACTION TO SAVEPOINT BeforeDelete") EndSelect Case Else MsgBox(48, "Warning", "Hostname existiert nicht!", 0, $hGui) EndSelect _UpdateThinClientlist() Case $cRun $aReturnCommandsSelected = _GUICtrlListView_GetSelectedIndices($hListViewCommands) $sReturnCommandsSelected = _GUICtrlListView_GetItemText($hListViewCommands, $aReturnCommandsSelected, 0) $aReturnHostSelected = _GUICtrlListView_GetSelectedIndices($hListViewThinClients) $sReturnHostSelected = _GUICtrlListView_GetItemText($hListViewThinClients, $aReturnHostSelected, 0) Switch $aReturnCommandsSelected Case "" MsgBox(0, "", "Es muss ein Befehl ausgewählt werden!") Case Else Switch $sReturnCommandsSelected Case "VNC Verbindung aufbauen" ShellExecute(@ScriptDir & "\vncviewer.exe", $sReturnHostSelected & " /autoscaling /password lcs") Case "ThinClient starten" $iRval = _SQLite_GetTable2d($hSQliteDB, "SELECT t_tMACADRESS FROM t_THINCLIENTS WHERE t_tHOSTNAME = '" & $sReturnHostSelected & "';", $aResult, $iRows, $iColumns) Select Case UBound($aResult) <> 2 MsgBox(16, "Error", "Fehlgeschlagen", 0, $hGui) Case $iRval = $SQLITE_OK ShellExecute(@ScriptDir & "\Wake.exe", $aResult[1][0] & " " & $sBroadcast, @ScriptDir, Default, @SW_HIDE) Case Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB), 0, $hGui) EndSelect Case Else $iRval = _SQLite_GetTable2d($hSQliteDB, "SELECT t_cCOMMAND FROM t_COMMANDS WHERE t_cCOMMANDNAME = '" & $sReturnCommandsSelected & "';", $aResult, $iRows, $iColumns) Select Case UBound($aResult) <> 2 MsgBox(16, "Error", "Fehlgeschlagen", 0, $hGui) Case $iRval = $SQLITE_OK TCPStartup() $socket = TCPConnect(_getipfromhostname($sReturnHostSelected), 61545) $sendedBytes = TCPSend($socket, $aResult[1][0]) Switch $sendedBytes Case 0 MsgBox(16, "Error", "Der Befehl konnte nicht gesendet werden.") EndSwitch Case Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB), 0, $hGui) EndSelect TCPCloseSocket($socket) TCPShutdown() EndSwitch EndSwitch EndSwitch WEnd AdlibUnRegister(_onlinecheck()) Func _UpdateThinClientlist() $iRval = _SQLite_GetTable2d($hSQliteDB, "SELECT t_tHOSTNAME FROM t_THINCLIENTS WHERE t_tROOM = '" & StringRight($sRoomlisted, 1) & "';", $aResult, $iRows, $iColumns) If $iRval = $SQLITE_OK Then _GUICtrlListView_BeginUpdate($hListViewThinClients) _GUICtrlListView_DeleteAllItems($hListViewThinClients) _GUICtrlListView_AddArray($hListViewThinClients, $aResult) _GUICtrlListView_DeleteItem($hListViewThinClients, 0) _GUICtrlListView_EndUpdate($hListViewThinClients) Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB)) EndIf EndFunc ;==>_UpdateThinClientlist Func _UpdateBefehlelist() $iRval = _SQLite_GetTable2d($hSQliteDB, "SELECT t_cCOMMANDNAME FROM t_COMMANDS;", $aResult, $iRows, $iColumns) If $iRval = $SQLITE_OK Then _GUICtrlListView_BeginUpdate($hListViewCommands) _GUICtrlListView_DeleteAllItems($hListViewCommands) _GUICtrlListView_AddArray($hListViewCommands, $aResult) _GUICtrlListView_DeleteItem($hListViewCommands, 0) _GUICtrlListView_InsertItem($hListViewCommands, "ThinClient starten", 0) _GUICtrlListView_InsertItem($hListViewCommands, "VNC Verbindung aufbauen", 1) _GUICtrlListView_EndUpdate($hListViewCommands) Else MsgBox(16, "Error", _SQLite_ErrMsg($hSQliteDB)) EndIf EndFunc ;==>_UpdateBefehlelist Func _onlinecheck() $aReturnCurrentClients = _GUICtrlListView_GetItemTextArray($hListViewThinClients) For $i = 1 To $aReturnCurrentClients[0] If Ping($aReturnCurrentClients[$i], 500) <> 0 Then ConsoleWrite("online" & @CRLF) Else ConsoleWrite("offline" & @CRLF) EndIf Next EndFunc ;==>_onlinecheck Func _getipfromhostname($sHostname) Local $sPingPID = Run(@ComSpec & " /c ping " & $sHostname & " /4 /n 1", @SystemDir, @SW_HIDE, 0x8) While True Local $sLine = StdoutRead($sPingPID) If @error Then ExitLoop If StringRegExp($sLine, "\[.*\]") = 1 Then Local $aReturnIP = StringRegExp($sLine, "\[.*\]", 1) Return StringTrimRight(StringTrimLeft($aReturnIP[0], 1), 1) EndIf WEnd Return SetError(0, @extended, -1) EndFunc ;==>_getipfromhostname