Ein bekanntes Thema im enaio®-Consulting: Ein Nutzer hat ein Problem mit dem System, das niemand sonst zu haben scheint. Wenn man als hilfsbereiter Consultant per Telefon versucht, das ungewollte Verhalten bei sich zu reproduzieren, verhält sich das System aber plötzlich leider korrekt.
In diesen Situationen wäre es schön, wenn man sich direkt mit den Login-Daten des betroffenen Nutzers im System einwählen könnte, um die gleichen Bedingungen herstellen zu können, die dem Nutzer Probleme verursachen.
Die Ausgangssituation kann schnell dazu führen, dass man sich als Consultant fühlt, wie eine Phishing-Mail, mit der aus unbedarften Endnutzern zuerst die Login-Daten und anschliessend die Ersparnisse extrahiert werden. “Könnten Sie mir bitte ihr Passwort geben?” - Nicht sehr professionell.
Das kleine Script, das hier vorgestellt wird, umgeht das Problem, ohne dass der Consultant das Passwort des Users gesehen hat.
Voraussetzung hierfür ist, dass in der Benutzerkonfiguration des Admins, der das Problem untersucht, die Systemrolle ‘Server: Ado-Jobs ausführen’ gesetzt ist, so wie unten im Screenshot angezeigt.
Anwender-Sicht auf die Dinge
Der Anwender startet das Script per Doppelklick und wird von einem Eingabefeld begrüsst:
Der ‘Cancel’-Button bricht das Script komplett ab.
Nachdem der Anwender den Benutzernamen der betroffenen Person eingegeben hat muss in einer weiteren Maske bestätigt werden, dass das Passwort tatsächlich geändert werden kann:
Bei Klick auf ‘No’ bricht das Script wiederum ab. Sollte hingegen auf ‘Yes’ geklickt worden sein, wird das Passwort auf ‘optimal’ geändert und der Consultant kann sich mit dem Benutzernamen des Nutzers einloggen.
Es öffnet sich gleichzeitig ein weiteres Fenster, das dem Consultant ermöglicht das vorherige Passwort wiederherzustellen.
Sobald der Consultant das Problem reproduziert hat und den Login nicht mehr benötigt, kann er das Fenster wieder in den Vordergrund holen und mit Klick auf ‘Yes’ das Passwort wiederherstellen. Sollte der Consultant auf ‘No’ klicken, bleibt das Passwort des Nutzers auf ‘optimal’ gesetzt und das ursprüngliche Passwort müsste über den enaio®-Administrator wieder neu gesetzt werden.
Das Script
Hier nun das kleine Helfer-Script zum selbst nutzen:
ConststdPwd="#jRDlgEKu8rZaoJdZtWz"+\"R0xRz08VaAxfyiYGwxFM5R8OnOccGSs"+\"Kq3DRrxcDvsqJicZsz6LGVBNhzKOQzj"+\"2+mU/eZ/wGvJMJ54YAJb+T1X4MtfZrh"+\"NU5+cSX4rSftZdKNyhLyV9aSM1RtXju"+\"lboAG12n4lTEKJyEC/3aVlxkanaGYBG"+\"payWz53BUP2e4NXPFs"DimMyAX:SetMyAX=CreateObject("Optimal_AS.Application")DimClientDrtSession:SetClientDrtSession=MyAX.GetDrtSessionMain():SubMainDiminUser,origPwdDimselStmnt,updStmntDimintAnswer'DisplayInputBoxtogetUserforwhichthePwdshouldbechangedinUser=InputBox("For which user would you like to change the password?",\"Change Password")IfinUser=""ThenExitSubselStmnt="select passwort from sysadm.benutzer where benutzer = '"&inUser&"'"'StorePwdforthisUserorigPwd=executeSQLSelect(selStmnt)'ChangePwdto"optimal"intAnswer=MsgBox("Would you like to temporarily update the password of user '"&\inUser&"' to 'optimal'?",vbYesNo+vbQuestion,"Change Password")IfintAnswer=vbYesThenupdStmnt="update sysadm.benutzer set passwort = '"&stdPwd&\"' where benutzer = '"&inUser&"'"executeSQLupdStmntElseExitSubEndIf'RestorePasswordintAnswer=MsgBox("Would you like to restore the original password of user '"&\inUser&"'?",vbYesNo+vbQuestion,"Change Password")ifintAnswer=vbYesThenupdStmnt="update sysadm.benutzer set passwort = '"&origPwd("passwort")&\"' where benutzer = '"&inUser&"'"executeSQLupdStmntElseExitSubEndIfEndSub'HelperFunctionsFunctionExecuteSQL(ByValstatement)Dimjob:Setjob=ClientDrtSession.CreateJob("ado","ExecuteSQL")job.addInParam"Command",statement,1job.addInParam"Flags","0",2job.executeSetexecuteSQL=jobEndFunctionfunctionexecuteSQLSelect(ByValstatement)Dimjob:setjob=executeSQL(statement)DimRS:SetRS=CreateObject("ADODB.Recordset")RS.Open(Split(job.GetOutFiles(),";")(0))setexecuteSQLSelect=RSendfunction