2012-02-13 4 views
2

Je configure une entrée crontab pour tirer le code d'un repo svn - Je l'ai déjà fait, donc je ne sais pas ce que j'ai raté cette fois. C'est sur OSX 10.7 (Lion).svn authentification de travail cron (osx 10.7)

Si le dépôt est public, cela fonctionne sans problème. Si le repo est privé (c'est-à-dire nécessite un utilisateur/passe), l'authentification échoue, même si mes informations d'identification sont mises en cache puisque normalement je peux le faire en ligne de commande sans invite utilisateur/pass.

L'e-mail généré par cron m'indique que je cours le même shell, que je suis le même utilisateur, que le dossier de départ est correct, etc. Mais svn échoue à exporter le fichier; Je peux voir dans l'erreur cron m'envoie un courriel qu'il demande un mot de passe, ne l'obtient pas, demande alors l'utilisateur, ne l'obtient pas, et finalement échoue avec le message:

l'autorisation a échoué: N'a pu s'authentifier au serveur: rejeté Défi de base (J'ai omis les URL spécifiques)

J'ai essayé les options --non-interactive et --config-dir sans aucune chance, bien que je n'ai jamais eu à le faire auparavant .

Des idées?

merci, thomas blom à Austin, TX

+0

Juste idée de côté: peut-être que vous allez activer la sortie verbeuse, rediriger stderr pour vous connecter et vous donner de la nourriture? Pour le repo basé sur http: "Pour obtenir une sortie plus verbeuse pour les opérations de subversion, vous devez activer le débogage au néon dans le client éditez le fichier ~/.subversion/servers en ajoutant la ligne ' neon-debug-mask = 130' à la section [global] de , en veillant également à décommenter la ligne [global]." –

+0

Sujet apparenté (sans réponse acceptée) [http://serverfault.com/questions/293835/svn-command-works-in-shell-but-not-in-cron-why-not](http://: serverfault.com/questions/293835/svn-command-works-in-shell-but-not-in-cron-why-not) –

+0

Ceci est le même problème sur un forum différent, un utilisateur posté ici comment résoudre ce problème. ssh-agent, mais je ne sais pas trop comment l'appliquer à svn. Malheureusement, il semble que la réponse soit "utiliser launchctl" http://apple.stackexchange.com/questions/18832/ssh-under-cron-stops -working-in-os-x-10-7-lion –

Répondre

2

svn help co

Global options: 
    --username ARG   : specify a username ARG 
    --password ARG   : specify a password ARG 
+0

Bien que cela fonctionne réellement, il semble également exiger que je permets à svn de stocker les mots de passe non cryptés sur le disque, et ce n'est pas une bonne solution car cela signifie que je dois stocker le nom d'utilisateur et passer dans le cronjob etc Normalement, si vous avez des informations d'identification en cache, vous n'avez pas à fournir explicitement ces informations - et je ne dois pas le fournir si je suis à une invite de commande, seulement si elle est b Eing courir à partir d'un travail cron. –

+0

@ThomasBlom - peut-être * crontab personnel * sera la solution pour vous? –

+0

@ThomasBlom et ** vous pouvez ** utiliser --config-dir à des fins d'autorisation, mais l'authentification encaissée à partir de partir est de direction plus correcte, je pense que –

0

Essayez ceci ... bien que je l'avoue est très stupide, mais cela a fonctionné pour moi.

J'utilise un compte factice pour faire mon travail SVN/Cron, et j'ai récemment rencontré la même chose que vous. OSX Lion.

Je peux exécuter la commande sur la ligne de commande, mais pas via cron. Je ne peux pas l'expliquer, parce que je suis pressé où je suis réellement, alors je laisse la recherche à vous. Voici ce que je l'ai fait pour résoudre mon problème:

  1. signe Remotely à votre compte en utilisant SSH
  2. retirer récursive ~/Library/Porte-clés
  3. Alors qu'il était encore à distance loged dans, effectuez votre commande svn (j'ai les paramètres dans mon ~/.subversion/serveurs pour enregistrer les mots de passe etc etc juste FYI)

Cela a fonctionné pour moi. Pour une raison quelconque, Keychain de Mac interférait avec la méthode save_my_authentication intégrée de subversion, comme je pouvais voir une entrée pour ma commande LDAP/SVN dans Keychains. Mais Keychains ne semble pas l'utiliser à travers Cron, ou ... cron n'utilise pas Keychains :) (probablement vrai que la dernière partie)

De toute évidence, si c'est votre compte personnel, vous ne voulez probablement pas supprimer le répertoire Keychain! Vous pouvez essayer de supprimer l'entrée SVN dans le trousseau uniquement, puis d'exécuter la commande SVN lors de l'utilisation de SSH.