2012-04-17 3 views
1

Net :: FTP :: Foreign을 사용하고 있는데 파일을 찾을 수 없다는 오류가 계속 발생하고 구문이 잘못되었거나 ' 그것을 사용하는 방법을 오해.Net :: SFTP :: Foreign을 사용하여 Perl SFTP 문제가 발생했습니다.

$LOGFILE = 'data_log' . $YYYYMMDD . '.log'; 

$sftp->setcwd('/tmp') 
    or die 'Unable to change working directory to /tmp: ' . $sftp->error; 
print "CWD set\n"; 
my $ls = $sftp->ls('/tmp', names_only => 1, ordered => 1); 

foreach my $file (@$ls) { 
    print $file . "\n"; 
} 

print 'Getting file: ' . $LOGFILE . "\n"; 
$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log') 
     or die 'Could not get remote file: ' . $sftp->error; 

내가 오류는 그러한 파일이 원격 측에 존재하지하지만 난 내가 LS cmd를 수행 할 때 그들이 존재 확인 한 것입니다.

작동하지 않는 스크립트에서 맹목적으로 잘못된 점이 있습니까?

이 또한 내가 :: SFTP :: 해외 순 :: SFTP는 10.7

답변

1

을 실행하는 내 MBP에 인터넷 구축하지 않기 때문에 사용하고있어 당신은이 :

$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log') 

/tmp/data_log*라는 이름의 파일이 있습니다 ? 또는 /tmp에있는 모든 파일을 data_log으로 시작 하시겠습니까?

get 메서드를 사용하면 한 번에 하나의 파일 만 가져올 수 있습니다. 글로브가 작동하지 않습니다. getforeach 루프로 이동하지 않으시겠습니까? 당신이 원하는 파일을 볼 때, 그것을 붙잡아 라. 주어진 패턴과 일치하는 모든 파일을 전송합니다

foreach my $file (@{$ls}) { 
    print qq(Found file "$file" in directory\n); 

    # Is this the file we want to fetch? 

    if ($file eq $LOGFILE) { 
      print qq(Attempting to fetch "$file"\n); 
      $sftp->get("$LOGFILE") #I think you're only interested in this file 
       or die qq(Could not fetch file "$LOGFILE" from directory:) . $sftp->error; 
      print qq(Fetched file "$file"\n); 
    } 
} 
2

대신 get 사용 mget.