Herramientas de consola para owncloud …

… mucho más rápidas y versátiles que el interfaz web.

Cuanto más utilizo ownCloud más necesario se me hace emplear herramientas de administración desde la consola. No es que no pueda utilizar el navegador, pero hay cosas más rápidas y más efectivas desde el shell.

Las utilidades que se incluyen en ownCloud para realizar estas tareas precisan de un envoltorio para emplearse con más comodidad por lo siguiente:

  1. Están instaladas bajo el directorio de owncloud, que suele ser /var/www/owncloud, aunque hay algunas un poco especiales.
  2. Están escritas en lenguaje PHP (al igual que el resto de la aplicación).
  3. Deben funcionar bajo el usuario del servidor web: www-data (al menos en Debian).
  4. Necesitan un pase de parámetros.

El envoltorio, pues, tendrá que lidiar con ello de esta forma:

#!/bin/bash 

# Variables
VERSION=0.5
OWNCLOUD_DIR=/var/www/owncloud
OWNCLOUD_USER=www-data
OWNCLOUD_FILE=$(basename $0)

OWNCLOUD_ENGINE=$(which php)
ROOT_ENGINE=$(which sudo)

# Parámetros
ARGS=$*

# Selección de aplicación 
case $OWNCLOUD_FILE in
occ*)
    OWNCLOUD_FILE="occ"
    ;;
occ_updater*)
    OWNCLOUD_FILE="updater/application.php"
    ;;
occ_cron*)
    OWNCLOUD_FILE="cron.php"
    ;;
*)
    echo "$0: aplicación owncloud desconocida" >&2
    exit 3
    ;;
esac
OWNCLOUD_APP="${OWNCLOUD_DIR}/${OWNCLOUD_FILE}"

# Comprobaciones
if [ ! -x $OWNCLOUD_ENGINE ]; then 
    echo "$0: no existe el programa $OWNCLOUD_ENGINE" >&2
    exit 2
fi
if [ ! -f $OWNCLOUD_APP ]; then
    echo "$0: no existe el archivo $OWNCLOUD_APP" >&2
    exit 1
fi 

# Ejecución
${ROOT_ENGINE} -u $OWNCLOUD_USER $OWNCLOUD_ENGINE -f $OWNCLOUD_APP $ARGS

El programa, como puede verse, se limita a construir una línea de ejecución con los parámetros convenientemente traducidos y a efectuar algunas verificaciones.

Como resulta que hay programas en ownCloud que están bajo el directorio principal y otros que se sitúan más abajo, además de que puede existir una colisión de nombres con otros programas en el sistema, he decidido renombrar algunos de ellos como se muestra aquí:

  • occ -> /var/www/owncloud/occ.php.
  • occ_cron -> /var/www/owncloud/cron.php.
  • occ_updater -> /var/www/owncloud/updater/application.php.

Recetario para occ (ownCloud console)

Útiles generales

  • status enseña el estado de la instalación (modo mantenimiento, versión, …).
  • check comprueba las dependencias del entorno del servidor.
  • help muestra la ayuda del programa.
    • help command hace lo mismo pero para una orden concreta.
  • list despliega la lista de órdenes del programa occ.
  • upgrade efectúa las tareas tras una actualización a una nueva versión (que debe estar instalada).

Mantenimiento

  • maintenance:mode para consultar el estado:
    • maintenance:mode --on para activarlo.
    • maintenance:mode --off para desactivarlo.
  • maintenance:mimetype:
    • maintenance:mimetype:update-db actualiza la base de datos de tipos mime (para identificar contenido de archivos) y el caché de los mismos.
    • maintenance:mimetype:update-js actualiza el archivo mimetypelist.js.
  • maintenance:repair intenta reparar la instalación.
  • maintenance:singleuser activa el modo mono-usuario.

Gestión de usuarios

  • user:add añade un nuevo usuario.
  • user:delete borra un usuario.
  • user:report enseña cuántos usuarios tienen acceso y de dónde procede.
  • user:resetpassword reinicia la contraseña de un usuario.
  • user:lastseen muestra la última conexión de un usuario.

Gestionar aplicaciones

  • app:list obtiene una lista de aplicaciones, activas e inactivas.
  • app:enable para activar una aplicación.
  • app:disable para lo contrario.

Sobre la configuración

  • config:list para obtener toda la configuración, aplicaciones incluídas, en formato JSON.
  • config:import para importar una configuración (previamente obtenida con el anterior).

Operaciones con DAV

  • dav:create-addressbook permite crear una agenda para un usuario con un nombre concreto.
  • dav:create-calendar igual pero con un calendario.

Operaciones con archivos

  • files:scan busca nuevos archivos y actualiza el caché de los mismos.
  • files:cleanup limpia el caché de archivos.
  • files:transfer-ownership transfiere la propiedad de archivos y carpetas de un usuario a otro, incluyendo los compartidos.

La búsqueda de nuevos archivos (files:scan) los añade al caché y puede realizarse con todos los archivos, sólo los de uno o varios usuarios e incluso se les puede limitar a una ruta concreta.

Comprobando la integridad del código

Desde la versión 9.0 de ownCloud el código y las aplicaciones se firman con una clave para asegurar su estabilidad y proteger el entorno.

  • integrity:check-core para verificar que el núcleo de ownCloud es correcto.
  • integrity:check-app para lo mismo pero sólo con una aplicación.

Gestionando el registro de actividades

  • log:owncloud muestra los parámetros actuales del registro.
  • log:manage permite manipular el registro.

Enlaces y referencias