0

Perl から cvs チェックアウトしようとしているときに、許可が拒否されました (publickey、keyboard-interactive) でこのエラーが発生しました。

問題とは何ですか?これを解決するにはどうすればよいですか?

コード :

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

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

単独で実行し、ssh キーを使用する

4

2 に答える 2

1

Chas。の質問後の追跡調査:

  • そのコマンドは通常、/bin/shまたは他のシェルの下で実行されますか?テストするには、/bin/shコマンドを実行してBourneシェルを起動し、コマンドを手動で再試行します。私は「CVSROOT:---」表記に精通していません-それはCVSROOT環境変数を設定することを意味しますか?Bourneシェルでは、通常、「=」を使用して実行されますが、「:」が使用されることはありません。

  • コマンドを手動で実行すると、ユーザーからの入力が必要ですか?私はそうするのを見cvs coたことがありませんが、sshでは使用しません。

  • コマンドの最後にリダイレクトを追加して、実行後にファイルの内容を確認してください。

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

于 2010-06-11T11:30:31.210 に答える
1

エラーを診断する手順:

  • SSHキーを使用していますか?
  • そのキーにはパスフレーズがありますか?
  • 手で動かすとうまくいきますか?
  • スクリプトは、手動で実行したときと同じユーザーとして実行されていますか?
  • スクリプトは、手動で実行したときと同じ環境で実行されていますか? (例:cronジョブが同じ環境で実行されない)

すべての答えが「はい」だと思う場合、最後の答えはおそらく「いいえ」です。スクリプトがスケジューラーから実行cronされている場合、手動で実行した場合と同じ環境で実行されない可能性が高くなります。私が通常これを解決する方法は、スケジューラと 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
于 2010-06-11T11:14:07.943 に答える