Perl から cvs チェックアウトしようとしているときに、許可が拒否されました (publickey、keyboard-interactive) でこのエラーが発生しました。
問題とは何ですか?これを解決するにはどうすればよいですか?
コード :
system ( "CSVROOT:--- CVSRSH:--- cvs co a ");
# i have proper value in cvs root and cvs rsh .
単独で実行し、ssh キーを使用する
Chas。の質問後の追跡調査:
そのコマンドは通常、/bin/sh
または他のシェルの下で実行されますか?テストするには、/bin/sh
コマンドを実行してBourneシェルを起動し、コマンドを手動で再試行します。私は「CVSROOT:---」表記に精通していません-それはCVSROOT環境変数を設定することを意味しますか?Bourneシェルでは、通常、「=」を使用して実行されますが、「:」が使用されることはありません。
コマンドを手動で実行すると、ユーザーからの入力が必要ですか?私はそうするのを見cvs co
たことがありませんが、sshでは使用しません。
コマンドの最後にリダイレクトを追加して、実行後にファイルの内容を確認してください。
system ( "CSVROOT:--- CVSRSH:--- cvs co a > /tmp/log_cmd 2>&1");
エラーを診断する手順:
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