Domanda

Il permesso ha negato (publickey, keyboard-interactive) ha ottenuto questo errore, mentre io sto cercando di cvs checkout da Perl.

ciò che è problema e su come reslove questo?

Codice:

system ( "CSVROOT:--- CVSRSH:--- cvs co a ");

# i have proper value in cvs root and cvs rsh .

la sua corsa da solo e con il tasto ssh

È stato utile?

Soluzione

procedura per diagnosticare l'errore:

  • Stai usando una chiave SSH?
  • non quella chiave hanno una passphrase?
  • Funziona quando lo si esegue a mano?
  • è lo script in esecuzione come lo stesso utente, come quando si esegue a mano?
  • è lo script in esecuzione nello stesso ambiente, come quando si esegue a mano? (Ad esempio cron lavori non vengono eseguiti nello stesso ambiente)

Se si pensa che tutte le risposte sono sì, allora molto probabilmente l'ultima risposta è davvero no. Se lo script è in esecuzione da un programmatore come cron è molto probabile che non viene eseguito con lo stesso ambiente, come quando si esegue a mano. Il modo in cui normalmente risolvere questo è quello di utilizzare uno script di shell tra lo scheduler e lo script Perl:

#!/bin/bash

source /home/USERNAME/.profile

#set any other environment variables it needs like

export CSVROOT=:pserver:USERNAME@HOST:/path/to/repo
export CVSRSH=ssh

/path/to/perl/script/script.pl

Altri suggerimenti

.

Follow-up indagini dopo Chas delle domande:

  • fa quel comando normalmente eseguito in /bin/sh o qualche altro shell? A prova, eseguire il comando /bin/sh per avviare Bourne shell e provare il comando a mano di nuovo. Io non sono a conoscenza "CVSROOT: ---" la notazione - è ciò significava per set variabile di ambiente CVSROOT? In Bourne shell di solito è fatto usando "=", non ha mai visto ":". Utilizzato

  • Il comando, quando viene eseguito a mano, si aspettano qualche input da voi? Non ho mai visto cvs co di farlo, ma io non lo uso con ssh.

  • Tenta di aggiungere un redirect alla fine del comando e guardate cosa c'è nel file dopo l'esecuzione:

    system ( "CSVROOT:--- CVSRSH:--- cvs co a > /tmp/log_cmd 2>&1");

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top