La commande occ
permet de configurer Nextcloud (depuis le bash
donc). Cependant cette commande doit ĂȘtre exĂ©cutĂ©e dans son environnement.
Pour cela le compte que vous utiliserez doit ĂȘtre sudoer
et pouvoir accĂ©der Ă lâutilisateur www-data
. Je ne rentre pas dans les dĂ©tails de cette partie de la configuration, puis que cela dĂ©pend fortement de la distribution Linux utilisĂ©e â pour rechercher de la documentation utilisez les mots sudo
, sudoer
et weel
.
Comment avoir une commande occ
simple supportant la complétion :
On peut mĂȘme aller un peu plus loin et masquer complĂštement le changement dâutilisateur lâaide du script suivant :
#!/bin/bash
#
# occ-completion.sh
#
# based on result of:
#
# sudo -u www-data php /var/www/nextcloud/occ _completion --generate-hook --shell-type bash
#
# This script should be sourced in ~/.bashrc
#
function _occ_9cbb1906d0cf7a74_complete {
local CMDLINE_CONTENTS="$COMP_LINE"
local CMDLINE_CURSOR_INDEX="$COMP_POINT"
local CMDLINE_WORDBREAKS="$COMP_WORDBREAKS";
export CMDLINE_CONTENTS CMDLINE_CURSOR_INDEX CMDLINE_WORDBREAKS
local RESULT STATUS;
RESULT="$( sudo -E -u www-data php /var/www/nextcloud/occ _completion </dev/null )";
STATUS=$?;
local cur mail_check_backup;
# shellcheck disable=SC2034
mail_check_backup=$MAILCHECK;
MAILCHECK=-1;
_get_comp_words_by_ref -n : cur;
if [ $STATUS -eq 200 ]; then
_filedir;
return 0;
elif [ $STATUS -ne 0 ]; then
echo -e "$RESULT";
return $?;
fi;
# shellcheck disable=SC2086 disable=SC2006
COMPREPLY=(`compgen -W "$RESULT" -- $cur`);
__ltrim_colon_completions "$cur";
MAILCHECK=mail_check_backup;
}
if [ -f '/var/www/nextcloud/occ' ] ; then
alias occ="sudo -E -u www-data php /var/www/nextcloud/occ"
if [ "$(type -t _get_comp_words_by_ref)" == "function" ]; then
echo "* 'occ' registred as an alias of 'occ' with completion enabled."
complete -F _occ_9cbb1906d0cf7a74_complete "occ"
else
>&2 echo "Completion was not registered for occ"
>&2 echo "The 'bash-completion' package is required but doesn't appear to be installed."
fi
else
echo '/var/www/nextcloud/occ not found - not registered' >&2
fi
Si vous sourcez ce script depuis votre bashrc
ou depuis un terminal, vous aurez alors accÚs à la complétion de la commande occ
.
source occ-completion.sh
occ # puis appuyez sur la touche <TAB> deux fois de suite.
Comment écrire une fonction bash
permettant dâexĂ©cuter occ
 :
Avoir accĂšs directement Ă occ
depuis un script bash
est assez simple, il suffit dâutiliser la fonction suivante :
function occ {
cat <<EOF >&2
sudo -E -u www-data php /var/www/nextcloud/occ $@
EOF
sudo -E -u www-data php /var/www/nextcloud/occ "$@"
}
Comment obtenir la liste des identifiants des utilisateurs de votre instance :
Maintenant que nous avons rĂ©solu lâaccĂšs Ă la commande occ
, il est facile dâautomatiser pas mal de choses.
On utilisera la sortie au format JSON de la commande et donc le programme jq
sera requis, pour lâinstaller utilisez :
sudo apt update && sudo apt install -y jq
La liste des id
des utilisateurs sâobtient Ă lâaide :
occ user:list
Mais pour nâavoir que la liste des identificateurs des utilisateurs, vous pouvez utiliser :
occ user:list --output=json | jq -r 'keys[]'
Cela permet d'avoir un résultat utilisable dans un script.
Comment obtenir la liste des mails des utilisateurs de votre instance :
Si vous souhaitez envoyer un mail Ă tous les utilisateurs, vous aurez besoin de lâadresse quâils ont configurĂ©e dans leur profile. Cela sâobtient Ă lâaide de :
while read -r USER ; do
occ user:setting --output=json "${USER}" | jq -r .settings.email
done < <( occ user:list --output=json | jq -r 'keys[]' )
Magique ! Une adresse mail par ligne.
Avec un tableau des identificateurs des utilisateurs et la commande occ
beaucoup dâoptions sâoffrent Ă vous. Inspirez-vous de lâexemple ci-dessus.
Il nây a plus quâĂ âŠ
Mais comment configurer quelque chose ?
Dans les nombreuses commandes possibles de occ
en particulier Ă lâaide config:system:set
.
Notez que lâaide en ligne contiens des erreurs.
occ config:system:set --help
Voici quelques exemples :
occ config:system:set trusted_proxies 0 âvalue="192.168.0.254" # PremiĂšre valeur du tableau: trusted_proxies
occ config:system:set trusted_proxies 1 --value="192.168.0.253" # Seconde valeur du tableau: trusted_proxies
occ config:system:set overwritehost âvalue="nextcloud.exemple.org"
occ config:system:set overwriteprotocol --value="https"
A priori toutes les valeurs ne peuvent pas ĂȘtre dĂ©finies Ă lâaide de cette mĂ©thode (point Ă creuser).
኿