CtxKill et multi-farm

La configuration de nos batteries Citrix évolue, il n’est plus rare de devoir en gérer plusieurs. Les outils fournis par Citrix font bien leurs jobs, mais pour trouver la session d’un utilisateur parmi 10 batteries avec un nombre croisant de silos…



L’outil CtxKill vous permet de faire vos recherches sur plusieurs batteries. C’est du bêta, j’attends vos retours.

:wink:

http://doc.doctor-citrix.com/fr/ctxkill

"chavers" wrote:
La configuration de nos batteries Citrix évolue, il n'est plus rare de devoir en gérer plusieurs. Les outils fournis par Citrix font bien leurs jobs, mais pour trouver la session d'un utilisateur parmi 10 batteries avec un nombre croisant de silos....

L'outil CtxKill vous permet de faire vos recherches sur plusieurs batteries. C'est du bêta, j'attends vos retours.
;)
http://www.doctor-citrix.com/fr/produit/ctxkill.html

Salut Renaud,

Tout d'abord merci de partager ton développement qui me semble interessant pour la gestion de gros environnement Citrix.

Je viens de tester l'application et je rencontre un soucis : je n'arrive pas à faire de recherche de session.

Voici la liste de mes tests :
- Ajout de la ferme :
FERME FQDN_du_ZDC
FERME FQDN_du_ZDC:Port_XML
FERME Nom_NETBIOS_du_ZDC
FERME Nom_NETBIOS_du_ZDC:Port_XML
FERME IP_du_ZDC
FERME IP_du_ZDC:Port_XML

- Critère de recherche (pour chacun des tests ci-dessus) :
username
domainusername

A chaque fois, l'outil me renvoi "0 session(s)", y a-t-il quelque chose de spécifique à faire (je lance l'outil depuis une console d'admin / pas d'un serveur Ctx)?

Pour info, je lance l'outil avec un compte Administrateur de la ferme.

Merci d'avance pour ton retour,
Sam

En effet, je n’ai pas encore fait la doc :-[



1/ ajout de la batterie:

“farm name” "server name"



le nom de la batterie doit etre unique, c’est tout. c’est uniquement la clef de registre. l’application utilisera uniquement le propriétée mfcom "FarmName"



Le nom du serveur doit etre au format: nbt, fqdn ou @IP pas de port dans ce champ



2/ lancement:

Uniquement depuis un serveur XA, en ica ou rdp

avec un compte qui a le droit sur toute les batteries (admin citrix) “liste serveur”, “logoff session”…



3/ Recherche

Pas de nom de domain, c’est le champ “username” du mfcom

pour trouver “chavers” tu peux utiliser “chave” ou “chaver” ou "chavers"



4/ debug

dans ton registre, soius HKCUsoftwarechaversctxkill tu as un dword “debug” que tu peux passer a 1

puis avec dbgview (sysinternals) tu verras en live l’activité de l’application.





@++

ouais c’est un citrix logoff session tool en multiferme ;D



tiendez la version beta d’ailleurs

ajout du shadowing

filtrage par application publiée

selection de plusieurs sessions (enfin!)

Ben ici nous avons 9 batteries, et bientôt 14 :stuck_out_tongue:



La hotline jongle avec les outils d’admin entre du CPS4 et du XA5 pfff la galere

Salut,



Renaud : Ca marche vachement mieux sur une machine Citrix :slight_smile:



Fred : j’ai du mettre le fichier mscomctl.ocx dans le répertoire de l’appli pour la faire fonctionner : nickel :wink:



Pour vous 2 : Comment gérez vous la fonction shadowing : je suis occupé à faire une application (en hta car le client ne souhaite de préférence ne pas avoir de fichiers compilés) et je coince sur ce point :

Lorsque je lance le shadowing en ligne de commande :



sCmd = “cshadow " & SessionId & " /SERVER:” & Servername & " /MB"

Set oShell = CreateObject(“WScript.Shell”)

oShell.Run sCmd



J’arrive bien en shadowing mais uniquement sur une fenêtre de la taille d’un cmd… Y a-t-il une méthode que j’ai loupé ?



(Fred si tu as la solution sans compilation => Donnes la à Guillaume à son retour de congés :wink:



Merci d’avance,

Sam

"legsam" wrote:
Renaud : Ca marche vachement mieux sur une machine Citrix :)
c'est sur ;) tu en pense quoi ?
"legsam" wrote:
Pour vous 2 : Comment gérez vous la fonction shadowing : je suis occupé à faire une application (en hta car le client ne souhaite de préférence ne pas avoir de fichiers compilés) et je coince sur ce point :
Lorsque je lance le shadowing en ligne de commande :

Je ne connais pas de facon de faire du shadow en vbs.... Tu dois appeler la fonction WFShadowSession(A/W) de WFAPI.DLL

en c# ca ressemble a ca:


(...)

[DllImport("WFAPI.dll", EntryPoint = "WFShadowSessionA")]
private static extern bool WFShadowSession(
String ServerName,
long SessionId,
long Hotkey,
long HKModifier);

(...)


MetaFrameCOM.IMetaFrameFarm4 Batterie;
MetaFrameCOM.IMetaFrameServer Server;
MetaFrameCOM.IMetaFrameSession Session;
Batterie = listederetour[(string)MFSession["FarmName"]] as MetaFrameCOM.IMetaFrameFarm4;
Server = Batterie.GetServer(MetaFrameCOM.MetaFrameObjectType.MetaFrameWinSrvObject, (string)MFSession["ServerName"]);
Session = Server.GetSession((int)MFSession["SessionID"]);
if (MessageBox.Show(String.Format("Shadow {0}?nCtrl + Space to quit.", MFSession["UserName"]), "Shadow", MessageBoxButtons.YesNo) == DialogResult.Yes)
{

WFShadowSession(Server.ServerName, Session.SessionID, 20, 2);
}
(...)
"chavers" wrote:
"legsam" wrote:
Renaud : Ca marche vachement mieux sur une machine Citrix :)
c'est sur ;) tu en pense quoi ?
C'est franchement plus sympa que de faire la bascule entre les AMC, CPS des différentes versions c'est clair et c'est ce dont à besoin un helpdesk. Ma petite remarque sur ma première impression :

- La liste des fermes stockée dans le HKCU peut être un avantage dans certain cas, dans d'autre il risque de falloir faire un ADM pour le gérer par GPO ou modifier le default user/les profils utilisateurs. Il pourrait être intéressant de laisser la possibilité de faire une config dans HKLM (tu as normalement moins de serveurs d'admin que de personne dans ton helpdesk (normalement ;))
"chavers" wrote:
"legsam" wrote:
Pour vous 2 : Comment gérez vous la fonction shadowing : je suis occupé à faire une application (en hta car le client ne souhaite de préférence ne pas avoir de fichiers compilés) et je coince sur ce point :
Lorsque je lance le shadowing en ligne de commande :

Je ne connais pas de facon de faire du shadow en vbs.... Tu dois appeler la fonction WFShadowSession(A/W) de WFAPI.DLL
C'est bien le problème on ne peut pas appeler une fonction d'une DLL en HTA... ;(
Ce que je vais faire comme workaround c'est de faire un EXE qui prendra en paramètre ID session + Server et je le lancerait à la volé depuis le HTA mais du coup il y aura de la compil (mais pas beaucoup :))

Merci pour les infos,
Sam
"legsam" wrote:

- La liste des fermes stockée dans le HKCU peut être un avantage dans certain cas, dans d'autre il risque de falloir faire un ADM pour le gérer par GPO ou modifier le default user/les profils utilisateurs. Il pourrait être intéressant de laisser la possibilité de faire une config dans HKLM (tu as normalement moins de serveurs d'admin que de personne dans ton helpdesk (normalement ;))
ici c'est un vbs qui est publié:

Const HKEY_CURRENT_USER = &H80000001


Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootdefault:StdRegProv")
Set oFarms = CreateObject("Scripting.Dictionary")
Set oShell = CreateObject("WScript.Shell")



strKeyPath = "Software***ctxkill"

oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath, "Lock" ,sLock

If IsNull(sLock) Then
oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
oReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, "Lock" , "Y"
strKeyPath = "Software***ctxkillfarm"

oFarms.Add "farm1", "zdc1"
oFarms.Add "farm2", "zdc2"
oFarms.Add "farm3", "zdc3"
'(...)
oFarms.Add "farm4", "zdc4"
oFarms.Add "farm5", "zdc5"

oReg.CreateKey HKEY_CURRENT_USER,strKeyPath

For Each Farm In oFarms.Keys
oReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, Farm, oFarms.Item(Farm)
Next

End If

oShell.Run "D:win32appctxkillctxkill.exe", 1, TRUE




comme ca ils ont une liste par defaut, avec un loc pour ne pas casser leurs modifications. Evidaement ne GPO était la cible lors du dev...

sinon, tu peux dans ton HTA faire un appel à cshadow.exe l’outil en ligne de commande utilisé par wshadow (la barre de shadowing) pour lancer la session ICA

"legsam" wrote:


sCmd = "cshadow " & SessionId & " /SERVER:" & Servername & " /MB"
Set oShell = CreateObject("WScript.Shell")
oShell.Run sCmd

Stéphanie de monaco

moi yen a pas avoir compris le stephanie de monaco





ps: dans citrix logoff session tool j’utilise effectivement WFShadowSessionA