Inscription en masse d'utilisateurs ?

Bonjour,

J’ai un scenariserver 4.2. Dans le cadre d’un projet de construction de ressources collaboratives on me demande d’inscrire de l’ordre de 400 personnes. Je n’ai pas d’expérience de fonctionnement avec autant d’utilisateurs. Est ce envisageable ?
Si oui, quelle est la meilleure stratégie pour faire cette inscription sachant qu’il faudrait pourvoir les affecter à un groupe et les gérer ensuite.
Merci par avance de vos réponses.
Luc

1 J'aime

Bonjour Luc,

Sur la charge, pas de souci je pense, je crois qu’il y a des expériences
bien plus violentes. En revanche cela dépend du nombre d’accès
simultanés, mais plusieurs dizaines sans problème. Sylvain pourrait nous
en dire plus, mais il passe plein de temps à nous développer la
prochaine version (un client HTML ?), donc il ne parle plus sur les forums !

Pour charger en masse, il existe une procédure mis au point par Kelis,
avec un fichier XML. Mais je ne sais pas si cela a été releasé ou
documenté…

À suivre,

Stéphane.

Merci Stéphane pour cette réponse encourageante qui me permet de patienter que quelqu’un puisse communiquer sur le fonctionnement de ce fichier XML.

Bonne fin d’année :wink:
Luc

Bonjour,

Le serveur scenari peut être manipulé pour des actions d’administration via l’outil « SCENARIbatch » (syntaxe Apache ANT) que vous pouvez télécharger ici :

https://builds.kelis.fr/view/Scenari-4.2/job/SCbatch-4.2/lastSuccessfulBuild/artifact/releases/SCbatch-4.2/SCENARIbatch_4.2.1.02nightly_20161223-0350_fr-FR.zip

… ou directement via le service « batch » (cf http://scenari-platform.org/forum/viewtopic.php?p=5913#5913).

Cela est peu documenté pour le moment, mais vous trouverez quelques infos sur ce site http://docs.kelis.fr/sc42/scsrv/adminTech/lin/co/scenariBatch.html, et dans le fichier « readme.txt » de SCENRIbatch.

Cordialement,

Antoine

Kelis

Bonjour Antoine,
est-ce qu’il y a plus de documentation pour les scenariBatch, notamment pour l’import en masse d’utilisateurs?
Merci,
Katia

Bonjour Katia,

Malheureusement non. Mais le fichier « readme.txt » présent dans SCENARIbatch comprend des exemples qui devraient permettre à un administrateur applicatif de comprendre la logique de l’outil, et d’implémenter ce dont tu parles.

Antoine

Kelis

Bonjour Antoine,
Merci pour ta réponse. On vient d’installer un test avec ScenariBatch en suivant les indications :

  • création d’un build.xml
  • ajout de la fonction batch
  • configuration en copiant un exemple du fichier readme
    Quand on lance le script.scBatch.sh, on obtient un build successful mais de grosses erreurs et pas de nouveaux utilisateurs…

Peut-être une erreur de configuration du code xml ?

voici le xml




<property name="tmp.dir" location="${basedir}/tmp"/>
<property name="lib.dir" location="${basedir}/lib"/>

<!--**
     *  Run principal
     **-->
<target name="main">
    <!-- !Target à paramétrer! -->
    <echo>Indiquer ici les directives ant à executer :
            - Lancement de génération sur scenariServer (@see readme.txt/Generate)
            - pre/post action sur SCENARI bdd qui accompagnent un processus de backup 
    </echo>
        <scServer url="http://127.0.0.1:8104/s/u/batch" haltOnError="no" verbose="true">
<importUsers>
    <!-- Crée ou met à jour cette liste de users (format xon pour gérer les propriétés étendes en fonction de l'implémenation. -->
    <createOrUpdate>
        <a>
            <o account="groupA" userType="group" groupName="MyGroup">
                <a k="grantedRoles">
                    <s>main:author</s>
                </a>
            </o>
            <o account="x" userType="user" lastName="rond" firstName="doudou" password="truc" authMethod="local">
                <a k="groups">
                    <s>groupA</s>
                </a>
            </o>
        </a>
    </createOrUpdate>

    <!-- Supprime un ensemble de users. -->
    <delete>user1 user2</delete>

    <!-- Désactive tous les users (en fonction du type) en excluant les users de type superAdmin. -->
    <disableAll userType="user|group|all"/>
</importUsers>

<!-- Renommage d'un utilisateur -->
<renameUsers>
    <rename oldAccount="test" newAccount="test2"/>
    <rename oldAccount="xxx" newAccount="yyyy"/>
</renameUsers>
    <ant antfile="${lib.dir}/log.ant" target="file">
        <property name="p.msg" value="${x.logs}"/>
    </ant>
</target>

et le message d’erreur :
##############""
11:07 main:
[echo] Indiquer ici les directives ant à executer :
[echo] - Lancement de génération sur scenariServer (@see readme.txt/Generate)
[echo] - pre/post action sur SCENARI bdd qui accompagnent un processus de backup
[echo]
[scserver] Starting
[scServer] java.net.ConnectException: Connexion refusée (Connection refused)
[scServer] at java.net.PlainSocketImpl.socketConnect(Native Method)
[scServer] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
[scServer] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
[scServer] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
[scServer] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
[scServer] at java.net.Socket.connect(Socket.java:576)
[scServer] at java.net.Socket.connect(Socket.java:525)
[scServer] at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
[scServer] at sun.net.www.http.HttpClient.(HttpClient.java:211)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:308)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:326)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1044)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:980)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:898)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1139)
[scServer] at com.scenari.scant.batch.ScServerTask.execute(ScServerTask.java:215)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:606)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
[scServer] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:606)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.Task.perform(Task.java:348)
[scServer] at org.apache.tools.ant.Target.execute(Target.java:390)
[scServer] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[scServer] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[scServer] at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[scServer] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[scServer] at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[scServer] at org.apache.tools.ant.Main.runBuild(Main.java:809)
[scServer] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[scServer] at org.apache.tools.ant.Main.start(Main.java:180)
[scServer] at org.apache.tools.ant.Main.main(Main.java:268)
[scserver] failed:
java.net.ConnectException: Connexion refusée (Connection refused)

file:

BUILD SUCCESSFUL
Total time: 1 second

Une idée pour nous aider?
Autre question, nous souhaitons ajouter des utilisateurs gérés par LDAP, comment s’appelle la méthode d’authentification?

Merci,
Katia

Bonjour Katia,

Par défaut, la méthode d’authentification liée à LDAP est « remote ».

Il semble y avoir un pb de droits d’accès : il faut spécifier un utilisateur avec les droits d’administration via les paramètres user et password sur le tag « scServer ».

Antoine

Antoine POURCHEZ

Merci Antoine, on teste et je reviens vers toi.
A bientôt,
Katia

Bonjour,
on a testé et ce n’est pas mieux… Sans doute un problème de configuration.
Voici le message d’erreur :
SCENARIbatch - 4.2.103
Buildfile: /home/moka/scenri/build.xml

main:
[echo] Indiquer ici les directives ant à executer :
[echo] - Lancement de génération sur scenariServer (@see readme.txt/Generate)
[echo] - pre/post action sur SCENARI bdd qui accompagnent un processus de backup
[echo]
[scserver] Starting
[scServer] java.net.ConnectException: Connexion refusée (Connection refused)
[scServer] at java.net.PlainSocketImpl.socketConnect(Native Method)
[scServer] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
[scServer] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
[scServer] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
[scServer] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
[scServer] at java.net.Socket.connect(Socket.java:576)
[scServer] at java.net.Socket.connect(Socket.java:525)
[scServer] at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
[scServer] at sun.net.www.http.HttpClient.(HttpClient.java:211)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:308)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:326)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1044)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:980)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:898)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1139)
[scServer] at com.scenari.scant.batch.ScServerTask.execute(ScServerTask.java:215)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:606)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
[scServer] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:606)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.Task.perform(Task.java:348)
[scServer] at org.apache.tools.ant.Target.execute(Target.java:390)
[scServer] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[scServer] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[scServer] at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[scServer] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[scServer] at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[scServer] at org.apache.tools.ant.Main.runBuild(Main.java:809)
[scServer] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[scServer] at org.apache.tools.ant.Main.start(Main.java:180)
[scServer] at org.apache.tools.ant.Main.main(Main.java:268)
[scserver] failed:
java.net.ConnectException: Connexion refusée (Connection refused)

file:

BUILD SUCCESSFUL
Total time: 1 second

Une idée pour nous aider?

Merci,
Katia

Bonjour Katia,

Bizarre. Tu peux poster le fichier build.xml dans son intégralité (ou me l’envoyer en MP) ?

Antoine

Kelis

Bonjour,

Je reviens sur ce topic. J’ai la même erreur que citée par Katia sur scbatch. A savoir sous SC42 création d’un build.xml pour import de comptes avec l’aide des infos présentes dans le readme.txt et au lancement du scBatch.sh un message d’erreur ‹ Connexion refusée ›.

La portion du build.xml correspondante est la suivant :

<scServer url="http://127.0.0.1:8104/s/u/batch" haltOnError="no" verbose="true" user="XXXXX" password="YYYYY">
   <importUsers>
      <createOrUpdate>
         <a>
            <o account="MONGROUPE" userType="group" groupName="MONGROUPE"></o>
            <o account="user1" userType="user" lastName="user1" firstName="user1" password="" authMethod="remote">
                <a k="groups">
                    <s>MONGROUPE</s>
                </a>
            </o>
         </a>
       </createOrUpdate>
   </importUsers>
</scServer>

Et le message d’erreur

SCENARIbatch - 4.2.107
Buildfile: /var/lib/scenariserver4.2/SCENARIbatch_4.2.1.07/buildAddUser.xml

main:
[scserver] Starting
[scServer] java.net.ConnectException: Connexion refusée (Connection refused)
[scServer] at java.net.PlainSocketImpl.socketConnect(Native Method)
[scServer] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
[scServer] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
[scServer] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
[scServer] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
[scServer] at java.net.Socket.connect(Socket.java:607)
[scServer] at java.net.Socket.connect(Socket.java:556)
[scServer] at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
[scServer] at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
[scServer] at sun.net.www.http.HttpClient.(HttpClient.java:242)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:339)
[scServer] at sun.net.www.http.HttpClient.New(HttpClient.java:357)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340)
[scServer] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315)
[scServer] at com.scenari.scant.batch.ScServerTask.execute(ScServerTask.java:215)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:498)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
[scServer] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[scServer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[scServer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[scServer] at java.lang.reflect.Method.invoke(Method.java:498)
[scServer] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[scServer] at org.apache.tools.ant.Task.perform(Task.java:348)
[scServer] at org.apache.tools.ant.Target.execute(Target.java:390)
[scServer] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[scServer] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[scServer] at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[scServer] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[scServer] at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[scServer] at org.apache.tools.ant.Main.runBuild(Main.java:809)
[scServer] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[scServer] at org.apache.tools.ant.Main.start(Main.java:180)
[scServer] at org.apache.tools.ant.Main.main(Main.java:268)
[scserver] failed:
java.net.ConnectException: Connexion refusée (Connection refused)

file:

BUILD SUCCESSFUL
Total time: 0 seconds

Bonjour Franck,

Est-ce que le « module batch » a bien été activé dans ton SCENARIchain-server4.2, via le fichier de configuration « main.property », en décommentant la ligne :

server.conf.batch=universe/batch/server.xml

?

Remarque : dans SCENARIchain-server5.0+, ce module est de fait activé

Salut Antoine,

Désolé je viens de voir ta réponse.
Oui le fichier main.property contient bien la ligne server.conf.batch activée. Les 2 autres également d’ailleurs.

A+

Re,
Et pour confirmer que scbatch fonctionne, j’ai lancé un script de publication qui a fonctionné.

A+
Franck

Salut Franck,

Tu es sur un SCENARIchain-server, et tu exécutes le batch depuis cette machine ?

L’URL http://127.0.0.1:8104/s/u/batch est très très surprenante dans ce contexte : il manque au moins l’identifiant de la webApp.
Exemple :

http://127.0.0.1:8080/scserver/s/u/batch

Bonjour Antoine,

Bah en fait j’avais juste copié collé le code présent dans le readme.txt de scenaribatch. Et effectivement en mettant une ligne de la forme suivant ça marche très bien.

http://127.0.0.1:8080/scserver/s/u/batch

Merci pour ton aide
Franck

Bonjour Franck,

L’exemple de ce fichier de doc correspondait à l’URL à utiliser dans le cas particulier de SCENARIchain (le préambule expliquait cela très succinctement).

Pour éviter cette confusion, j’ai revu ce fichier pour homogénéiser les exemples, et n’y utiliser que les URLs SCENARIchain-server.

Antoine
Kelis