2013-07-18 8 views
2

Perl SCP을 사용하여 원격 서버에서 복사 한 파일을 확인하거나 가능할 수 있습니까? 아래는 내가 사용하고있는 Perl 명령입니다. 내 옵션이 다소 제한적이므로 SSH을 사용할 수 없습니다.Perl 및 SCP를 사용하여 복사 된 파일 확인

$scpe->scp("/u02/oraclebackup/$tar_file","HOST:/u04/orabkup/oraclebackup/oemp/"); 
+3

로컬로 원격 다시'cmp' 복사 로컬 아마도 신뢰할 수없는 ... 원격 측면에서 사용할 수 있습니까? 그리고, btw, 그것은 "scp"를 통해 "잘못된"사본을 얻을 수 있습니까? – jm666

+0

@ jm666에 동의합니다. 네트워크에서 어떤 일이 발생하지 않는 한 거의 항상 성공적인 전송을 보장합니다. – squiguy

+0

아마 나는 너무 조심스러워하고있을 것입니다. 이것은 cron에서 스크립트로 실행될 것이므로 직접 모니터링 할 수 없으며 향후 어떤 종류의 네트워크 문제가 발생할 수 있는지 알고 있습니다. 이것은 데이터베이스 복사본을 복사하기 때문에 로컬 복사본을 삭제하기 전에 괜찮 았는지 확인하고 싶었습니다. –

답변

1

좋아, 내 문제에 대한 해결책을 발견했습니다과 직접 사본을 확인하지 않습니다 동안 예상되는 하나의 옆에 에러가 발생했을 경우는 스크립트를 중지합니다. 여기 내 코드가 있습니다 :

$scpe->error_handler(\&scp_errors); 
$scpe->scp("/u02/oraclebackup/$tar_file", 
    "HOST:/u04/orabkup/oraclebackup/oemp/"); 

#Error trapping with exception for known harmless error 
sub scp_errors { 
    my $line = shift; 

    if ($line =~ /scp timed out while trying to connect to/) { 
     return (0); 
    } else { 
     return (1); 
    } 
} 

이것은 내 문제를 모두 해결 한 것 같습니다. 고마워요 @ chrsblck

+0

NP. 또한 'error_handler'를 설정하지 않으면 "간단한 'croak()'호출이 발생합니다. ['Carp'] (http://perldoc.perl.org/Carp.html#NAME)에 익숙하지 않다면, 그것을 바꾸는 것이 좋습니다;) – chrsblck