cClaude.rocks ☕ Le blog

L'informatique et les nouvelles technologies

Menu

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).

኿


â„č 2006 - 2021 | 🕾 Retour Ă  l'accueil du domaine | 🏡 Retour Ă  l'accueil du blog