diff --git a/nc-useradd.sh b/nc-useradd.sh new file mode 100755 index 0000000000000000000000000000000000000000..ec1857ec5c403eb150100290a13324bff483de92 --- /dev/null +++ b/nc-useradd.sh @@ -0,0 +1,57 @@ +#!/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\"