Skip to content
Snippets Groups Projects
Select Git revision
  • 332517418799132073aea708e99ca0da801f4466
  • main default protected
  • tl
3 results

nc-useradd.sh

Blame
  • user avatar
    Bruno BEAUFILS authored
    33251741
    History
    nc-useradd.sh 1.92 KiB
    #!/bin/bash
    # Création d'utilisateur dans Nextcloud
    #
    # usage: nc-useradd.sh [OPTIONS] USERID DISPLAYNAME EMAIL [GROUPE...]
    #
    # OPTIONS
    #     -h, --help          affiche ce message d'aide
    #
    # Créer un utilisateur dans l'instance Nextcloud via un appel à l'API
    # par curl pour ne pas avoir à spécifier de mot de passe.
    #
    # Les variables d'environnement suivantes doivent être fixées :
    #
    # - NEXTCLOUD_HOST : le nom de l'instance Nextcloud
    # - NEXTCLOUD_ADMIN_USER : l'id d'un utilisateur admin
    # - NEXTCLOUD_ADMIN_PASSWORD : le mot de passe de l'utilisateur admin
    #
    # Penser à protéger les espaces avec des quotes si nécessaires
    # (notamment pour DISPLAYNAME).
    #
    
    # Copyright (C) 2021 Bruno BEAUFILS <bruno@boulgour.com>
    #
    # This software comes with ABSOLUTELY NO WARRANTY.
    # This program is free software; you can redistribute it and/or
    # modify it under the terms of the GNU General Public License as
    # published by the Free Software Foundation in its version 2.
    # See the README or COPYING file for details.
    
    _doc () { sed -n '2,/^$/ { s/^ *#// ; s/^ //g ; t e ; d ; :e p }' <$0 ; }
    _die () { echo "${0##*/}: error: $*" 1>&2 ; exit 1 ; }
    
    test "x$1" = "x-h" -o "x$1" = "x--help" && _doc && exit
    
    test -z $NEXTCLOUD_HOST && _die "NEXTCLOUD_HOST est vide"
    test -z $NEXTCLOUD_ADMIN_USER && _die "NEXTCLOUD_ADMIN_USER est vide"
    test -z $NEXTCLOUD_ADMIN_PASSWORD && _die "NEXTCLOUD_ADMIN_PASSWORD est vide"
    test $# -lt 3 && _die "manque des paramètres. Essayer l'option -h"
    which curl 1>/dev/null 2>&1 || _die "curl inacessible"
    
    userid="$1"
    displayName="$2"
    email="$3"
    shift 3
    
    for g in "$@"
    do
        groups_args="$groups_args -d groups[]=\"$g\""
    done
    
    eval curl -X POST https://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${NEXTCLOUD_HOST}/ocs/v1.php/cloud/users \
         -d userid=\"$userid\" \
         -d displayName=\"$displayName\" \
         -d email=\"$email\" \
         $groups_args \
         -d language=\"fr\" \
          --header \"OCS-APIRequest: true\"