¿Cómo actualizar el repositorio de control de versiones en crontab?

¿Cómo actualizar el repositorio de control de versiones en crontab?

Estoy intentando automatizar la actualización del repositorio de control de versiones en crontab. El siguiente script /home/usr/mrbean/bin/update.shfunciona en la línea de comandos interactiva de Bash:

#!/bin/bash

ROOTPATH="/home/user/mrbean/temp/"
cd $ROOTPATH
SSHTMPFILE="${ROOTPATH}ssh-agent.cf"
ssh-agent -s | head -n 2 > "$SSHTMPFILE"

function killsshagent {
    /bin/kill $SSH_AGENT_PID
}
trap killsshagent EXIT


if [ -f "$SSHTMPFILE" ]; then
    source "$SSHTMPFILE"
    ssh-add
    rm "$SSHTMPFILE"
fi

killsshagent

if [ `hostname` == "mrbeancomp.local" ]; then
    REPODIR="/home/usr/mrbean/repo/"
    cd $REPODIR
    cvs update -dP  > "$HOME/log/log.txt"
fi

luego agrego

@hourly /home/usr/mrbean/bin/update.sh

El script funciona por sí solo cuando se invoca en el shell Bash interactivo, pero no a través de crontab. Da errores y se envía al correo del sistema /var/mail/mrbean:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
cvs [update aborted]: end of file from server (consult above messages if any)

[Actualizar]

killsshagentagregado en el programa para ssh-agentque no cuelgue.

[Actualizar]

Probé un programa adaptado en un repositorio de Git y experimenté el mismo problema. Mr. Bean no puede abandonar inmediatamente este repositorio de CVS y cambiar a uno nuevo de Git.

[Actualizar]

Tengo varios archivos de identidad en $HOME/.ssh/. ¿Es posible que cuando ejecuto desde crontab, necesite especificar qué archivo de identidad usar? ¿Si es así, cómo?

Respuesta1

Supongo (no soy un experto en Unix, pero he tenido un problema similar con trabajos cron que no se ejecutan), ¿con qué usuario estás ejecutando la tarea? ¿Ese usuario tiene todos los permisos necesarios para acceder a todo lo que necesita?

Sospecho que no (¡el error más o menos lo dice! :-D).

Si cierra la sesión del usuario que trabaja e inicia sesión como un usuario diferente, ¿aún funciona el script bash? Si no, entonces eso ayuda.

La solución que utilizamos fue ejecutar la tarea como un usuario específico.

Parece que hay varias formas de hacer esto (no siempre existen). No puedo comentar sobre los méritos de uno sobre el otro; eso lo decidirás tú. ¿Cómo especificar en crontab qué usuario ejecutar el script?

información relacionada