Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit Startscript Loginevent in MySQL schreiben

Frage Microsoft Windows Userverwaltung

Mitglied: goodnight

goodnight (Level 1) - Jetzt verbinden

05.10.2006, aktualisiert 08.10.2006, 3652 Aufrufe, 7 Kommentare

Hallo,

ich möchte die Logins und Logoffs der User auf meinem Win2k3 mittels Login und Logoff Script irgendwie in eine MySQL schreiben.
Dabei sollte der Username, die Worksation und die An- und Abmeldezeit sowie das Datum erfasst werden.
Wie krieg ich das hin? Ich nehme an, dafür muss ich mit VB Script arbeiten, aber das kann ich gaar nit.
Hatte bisher immer nur ne Batch-File die beim Login ein paar Laufwerke gemappt hat und nen Drucker hinzugefügt hat.
Gibts da irgendwas fertiges oder kann mir jemand nen Ansatz zeigen?

Gruß

goodnight
Mitglied: Dani
05.10.2006 um 21:09 Uhr
Hi,
also so kannst du Datensätze einfügen.Du musst legendlich die mysql.exe auf netlogon legen. Dazu würde ich einen Benutzer unter MySQL anlegen, der nur INSERT' machen kann. Somit ist es ausgeschlossen, dass jemand Datensätze verändern kann.

01.
G:\xampp\mysql\bin>mysql.exe --user=root --password=DEIN PW --database=test --e 
02.
xecute="INSERT INTO `users` ( `id` , `name` , `email` , `vip` , `fertig` ) VALUE 
03.
S (NULL, 's', 's', 's', '1');"
Gruß
Dani
Bitte warten ..
Mitglied: goodnight
06.10.2006 um 19:05 Uhr
Ich dachte schon ehr an VBS, da ich sowieso noch ein paar Sachen ausführen möchte, wie Laufwerke mappen.
Abgesehen davon kann ich das in ner Batch ja nit so gut verstecken, so dass jeder meiner Schüler sich das einfach kopieren kann (wenn er schnell genug ist) und die Abfrage beliebig manipulieren kann.


Gruß

goodnight
Bitte warten ..
Mitglied: goodnight
07.10.2006 um 22:26 Uhr
Nun, ich hab da jez was entwickelt...
Hoffe, dass irgendwer damit was anfangen kann - ist zugegebenermaßen verdammt unsauber gecodet, aber ist mein erstes Mal mit VBS

login.vbs

01.
Dim rs, strConnectString, strSQL 
02.
Set rs = CreateObject("ADODB.Recordset") 
03.
strConnectString = "DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;UID=root;Password=abc123;Database=logins;Option=3" 
04.
rs.ActiveConnection = strConnectString 
05.
 
06.
Function MyDate() 
07.
     dteCurrent = Date() 
08.
     dteDay = Day(dteCurrent) 
09.
     dteMonth = Month(dteCurrent) 
10.
     dteYear = Year(dteCurrent) 
11.
 
12.
     MyDate = dteYear & "/" & dteMonth & "/" & dteDay 
13.
 
14.
End Function 
15.
 
16.
Set objNet = WScript.CreateObject("WScript.Network") 
17.
 
18.
name = objNet.UserName 
19.
computer = objNet.ComputerName 
20.
 
21.
strSQL = "INSERT INTO user (ID,Name,Workstation,Datum,LogIn,LogOut) VALUES('0', '" & name & "', '" & computer & "', '" & MyDate & "', '" & time & "', '');" 
22.
rs.Open strSQL 
23.
 
24.
Dim timefile, MyFile 
25.
Set timefile = CreateObject("Scripting.FileSystemObject") 
26.
Set MyFile = timefile.CreateTextFile("h:\timefile.txt", True) 
27.
MyFile.WriteLine(time) 
28.
MyFile.Close
logout.vbs
01.
Dim rs, strConnectString, strSQL 
02.
Set rs = CreateObject("ADODB.Recordset") 
03.
strConnectString = "DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;UID=root;Password=abc123;Database=logins;Option=3" 
04.
rs.ActiveConnection = strConnectString 
05.
 
06.
Set objNet = WScript.CreateObject("WScript.Network") 
07.
 
08.
name = objNet.UserName 
09.
computer = objNet.ComputerName 
10.
 
11.
Function MyDate() 
12.
     dteCurrent = Date() 
13.
     dteDay = Day(dteCurrent) 
14.
     dteMonth = Month(dteCurrent) 
15.
     dteYear = Year(dteCurrent) 
16.
 
17.
     MyDate = dteYear & "/" & dteMonth & "/" & dteDay 
18.
 
19.
End Function 
20.
 
21.
strSQL = "INSERT INTO user (ID,Name,Workstation,Datum,LogIn,LogOut) VALUES('', '', '', '', '', '" & time & "');" 
22.
 
23.
Dim fso, fsoFile, Pfad 
24.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
25.
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 
26.
Pfad = "h:\timefile.txt" 
27.
 
28.
set fso = CreateObject("Scripting.FileSystemObject") 
29.
 
30.
If fso.FileExists(Pfad) Then 
31.
  set fsoFile = fso.OpenTextFile(Pfad, ForReading , true, TristateFalse) 
32.
strSQL = "UPDATE user SET LogOut='" & time & "' WHERE Name = '" & name & "' AND LogIn = '" & fsoFile.ReadLine & "';" 
33.
fsoFile.close 
34.
fso.DeleteFile(Pfad) 
35.
set fsoFile = nothing 
36.
set fso = nothing 
37.
Else 
38.
  MsgBox ("Fehler: timefile.txt wurde gelöscht - Ereignis wurde protokolliert.") 
39.
strSQL = "INSERT INTO badusers (ID,Name,Zeit,Datum) VALUES('0', '" & name & "', '" & time & "', '" & MyDate & "');" 
40.
End if 
41.
 
42.
rs.Open strSQL
Zur Erklärung:

In der Login.vbs wird in ne SQL Table Username, Computername, das Datum und die Loginzeit geschrieben. Zudem wird auf eine Textdatei auf einer Userspezifischen Freigabe eingerichtet um hinterher beim Logout den User wieder zu identifizieren und um damit die Tabelle in Puncto Logout zu ergänzen.

In der Logout.vbs wird die Textfile ausgelesen, um den User in der Table wiederzufinden und die aktuelle Zeit als Logout Zeit gesetzt. Zudem werden User, die die Textfile gelöscht haben bevor es zum Logout kommt, in eine extra Tabelle geschrieben. Anschließend wird die Textdatei, falls sie vorhanden war, gelöscht.


Gruß

goodnight
Bitte warten ..
Mitglied: Biber
08.10.2006 um 11:19 Uhr
Moin goodnight,

erstmal danke für das Posten Deiner Lösung.

In Deinem LogOut-Skript fehlt aber noch ein INSERT in die User-Tabelle (oder ich verstehe vielleicht den Hintergrund nicht).

Durch die erste INSERT-Anweisung ( im Zweig: Login-Zeit konnte ermittelt werden) wird doch ein Update durchgeführt.
strSQL = "UPDATE user SET LogOut='" & time & "' WHERE Name = '" & name & "' AND LogIn = '" & fsoFile.ReadLine & "';"

Okay.
Aber im zweiten Fall (keine LoginZeit gefunden) schreibst Du keinen Satz in die User-Tabelle?
Sondern nur in die Bad-Users?

Oder übersehe ich etwas?
Gruß
Biber
Bitte warten ..
Mitglied: goodnight
08.10.2006 um 13:13 Uhr
Hallo,

erstmal Danke fürs Feedback!

Nein, im Fall, dass die Zeitdatei nicht gefunden wird, schreibe ich nichts in die user, da ich die Endzeit zwar habe, sie aber dem User nicht eindeutig zuordnen kann, da es auch passieren kann, dass sich der User mehrmals am Tag einloggt. Sonst wäre ja die Zuordnung über die lokale Datei nicht nötig. Daher auch kein INSERT - oder was sollte ich da reinschreiben?
Vielleicht übersehe ich da ja ne Möglichkeit?!
Bin für alles offen.

Im übrigen:
Hat jemand eine Idee, wie ich feststellen könnte ob die Datei manipuliert wurde oder wo ich sie hinlagern könnte, wo der User zwar Lese- und Schreibzugriff hat, aber sie selbst nicht finden wird? Z.B. Temp oder sowas?
Dafür müsstet ihr mein Netzwerk kennen, aber das ist ein wenig schwierig - vielleicht gibts da ja auch so ne Lösung.

Gruß

goodnight
Bitte warten ..
Mitglied: Biber
08.10.2006 um 14:54 Uhr
Hmm, goodnight,

a)
nicht gefunden wird, schreibe ich nichts in die user, da ich die Endzeit zwar habe, sie aber dem User nicht eindeutig zuordnen kann
Doch. Die Kombination "username & rechnername" hast Du als eindeutige Zuordnung. Und die Logout-Zeit. Für ein neues INSERT.
Was macht es denn für einen Unterschied, ob Du einen LOGIN-Satz hast ohne LOGOUT-Zeit ( kann aus x Gründen passieren) oder einen LOGOUT-Satz ohne Login-Zeit?


b)
Hat jemand eine Idee, wie ich feststellen könnte ob die Datei manipuliert wurde oder
wo ich sie hinlagern könnte, wo der User zwar Lese- und Schreibzugriff hat, aber sie selbst nicht finden wird? Z.B. Temp oder sowas?

Machen sich Deine User einen Sport daraus?
Wenn ja: spiel doch nicht Hase und Igel mit denen. Nutzungsbedingungen unterschreiben lassen.
1. Verstoß dagegen führt zur Ermahnung, 2. Verstoß zur temporären Sperrung des Accounts, 3. Verstoß....

Oder: schreibe diese Log-Informationen nicht zusätzlich in die MySQl-Tabelle, sondern werte am Ende des Zeitraums (monatlich) oder auch auf Knopfdruck die Eventlogs der Clients aus.
Die Anmelde/Abmelde-Ereignis-IDs sind 6005 und 6006 oder so ähnlich... User- und Rechnername stehen auch drin und die Zeit ohnehin.
Und das Eventlog ist vergleichsweise einfach fälschungssicher zu bekommen (nämlich rein rechtemäßig) und außerdem kannst Du quasi nebenbei auch regelmäßig einen Blick auf die (gewichtigen) Fehler in den Eventlogs werfen.

Gruß
Biber
Bitte warten ..
Mitglied: goodnight
08.10.2006 um 16:59 Uhr
Hallo,

ja meine User machen sich einen Sport daraus, da es Schüler sind, die scheinbar leider meist nichts besseres zu tun haben. Deshalb auch die Badusers, damit ich die direkt sperren kann.
Ich kann es leider nicht eindeutig zuordnen, da es ja vorkommen kann, dass sich der User mehrmals am Tag am selben PC anmeldet - passiert sogar öfter.

Der Sinn und Zweck des Logs ist es aber primär einen Überblick über die User zu bekommen und ich fürchte, die Eventlogs auswerten ist ein wenig zu kompliziert für meine Kenntnisse.
Aber nichtsdestotrotz werfe ich da natürlich manchmal einen Blick rein.

Natürlich gibt es auch Nutzungsbedingungen, aber wenn wir die Verstöße, so wie nun in dieser Datenbank nicht eindeutig zuordnen können, sind wir einigermaßen Machtlos.

Gruß

goodnight
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Webbrowser
gelöst Daten in entfernte Mysql DB schreiben (3)

Frage von nullacht15 zum Thema Webbrowser ...

Batch & Shell
gelöst Loginzeiten aus dem Ereignisprotokoll in Excel schreiben (1)

Frage von l-Ne0n zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...