2012-01-20 1 views
0

SCP 또는 SFTP를 사용하여 한 서버에서 다른 서버로 파일을 전송하는 스크립트를 작성 중입니다. 발생하는 여러 유형의 오류를 구별하는 것이 중요합니다.SCP 또는 SFTP의 오류 잡기

내 문제는 SFTP 및 (특히) SCP에서 반환 된 오류 코드가 다른 유형의 오류를 구분하지 않는 것입니다.

예를 들어, SCP-ing을 실행하면 어떤 유형의 오류가 실제로 발생했는지에 관계없이 오류 코드 1이 나타나는 것처럼 보입니다 (예 : perrmission이 거부되었으므로 둘 모두 호스트에 연결할 수 없음 오류 코드 1) .

SFTP 또는 SCP의 경우 발생하는 오류를 안정적으로 판단 할 수있는 방법이 있습니까? $ stderr을 통해 구문 분석하고 그런 식으로 오류를 추출 할 필요없이?

답변

0

예, 일부 스크립트 언어 (예 : Perl, Python, Ruby 등) 및 해당 정보를 반환 할 수있는 SFTP 모듈을 사용하십시오. 예를 들어

:

#!/usr/bin/perl 
use Net::SFTP::Foreign; 
my $sftp = Net::SFTP::Foreign->new($host); 
$sftp->error and die "SFTP failed: " . $sftp->error; 
my $sftp->put("foo", "bar"); 
$sftp->error and die "put failed: " . $sftp->error; 
+1

감사합니다! 실제로 stdin, stdout, stderr 및 net : ssh를 통한 명령 반환 코드를 얻는 함수를 작성했습니다. net_ssh_object.open_channel을 사용하고 channel.exec (명령)을 수행했습니다. 그러나 나는 확실히이 길을 점검 할 것이다. – user1160958