Wie führe ich eine Aktualisierung des Versionskontroll-Repositorys in Crontab durch?

Wie führe ich eine Aktualisierung des Versionskontroll-Repositorys in Crontab durch?

Ich versuche, die Aktualisierung des Versionskontroll-Repositorys in crontab zu automatisieren. Das folgende Skript /home/usr/mrbean/bin/update.shfunktioniert in der interaktiven Bash-Befehlszeile:

#!/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

Ich füge dann hinzu

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

Das Skript funktioniert von selbst, wenn es in einer interaktiven Bash-Shell aufgerufen wird, aber nicht über Crontab. Es gibt Fehler aus und sendet eine Systemmail /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)

[Aktualisieren]

killsshagentzum Programm hinzugefügt, sodass ssh-agentes nicht hängen bleibt.

[Aktualisieren]

Habe ein angepasstes Programm in einem Git-Repository ausprobiert und dasselbe Problem festgestellt. Mr. Bean darf dieses CVS-Repository nicht sofort aufgeben und zu einem neuen Git-Repository wechseln.

[Aktualisieren]

Ich habe mehrere Identitätsdateien in $HOME/.ssh/. Ist es möglich, dass ich beim Ausführen von crontab angeben muss, welche Identitätsdatei verwendet werden soll? Wenn ja, wie?

Antwort1

Eine Vermutung (ich bin kein Unix-Experte, hatte aber ein ähnliches Problem mit nicht ausgeführten Cron-Jobs): Als welcher Benutzer führen Sie die Aufgabe aus? Verfügt dieser Benutzer über alle erforderlichen Berechtigungen, um auf alles zuzugreifen, was Sie benötigen?

Ich vermute nicht (der Fehler sagt das irgendwie! :-D).

Wenn Sie sich vom Arbeitsbenutzer abmelden und als anderer Benutzer anmelden, funktioniert das Bash-Skript dann immer noch? Wenn nicht, hilft das schon irgendwie.

Die von uns verwendete Lösung bestand darin, die Aufgabe als bestimmter Benutzer auszuführen.

Es scheint, dass es mehrere Möglichkeiten gibt, dies zu tun (gibt es die nicht immer). Ich kann nicht beurteilen, welche der beiden Möglichkeiten besser ist als die anderen – das müssen Sie selbst entscheiden. Wie gibt man in der Crontab an, von welchem ​​Benutzer das Skript ausgeführt werden soll?

verwandte Informationen