2012-04-05 3 views
0

텍스트 파일에서 매개 변수 집합을 가져 와서 해당 매개 변수를 기반으로 SFTP를 수행하는 셸 스크립트를 작성하려고합니다. 기본적으로, 나는 매일 webstats 로그를 가져 와서 중앙 위치로 옮깁니다.변수를 지정하면 SFTP가 실패합니다.

내가 가진 문제는 SFTP가 변수를 할당하는 방식에 따라 실패했기 때문입니다. 나는 디버깅을했고 while 루프가 변수의 루프를 반향하여 올바르게 작동한다는 것을 발견했다. 내가 얻는 오류는 연결이 닫혔다는 것입니다.

#!/bin/sh 
source /home/ntadmin/webstats/bin/webstats.profile 
source /home/ntadmin/webstats/bin/webstats.blogs.profile 

DATE=`date +%m%d%Y` 

SOURCE_FILE="`echo $WS_BC_SOURCE_FILE | sed -e 's/mmddyyyy/'$DATE'/'`" 

IFS="," 
while read WS_BLOG_NAME WS_BLOG_SOURCE_VAR WS_BLOG_DEST_VAR WS_BC_SERVER1; 
do 


#Step 1 SFTP 
cd $PERL_DIR 
if $PERL_DIR/sftp.pl $WS_BC_SERVER1 $WS_BC_ID $WS_BC_PW $WS_BLOG_SOURCE_VAR/$SOURCE_FILE $WS_BLOG_DEST_VAR/$SOURCE_FILE 
then 
echo 'SFTP complete' 
else 
echo 'SFTP failed!' 
exit 1 
fi 

#Step 2 - Check that ftp was successful (that the files exist) 
if [ -e $WS_BLOG_DEST_VAR/$SOURCE_FILE ] 
then 
echo "FTP of $WS_BLOG_SOURCE_VAR/$SOURCE_FILE from $WS_BC_SERVER1 was successful" 
else 
echo "FTP of $WS_BLOG_SOURCE_VAR/$SOURCE_FILE from $WS_BC_SERVER1 was not successful!" 
exit 1 
fi 

done < blogs_array.txt 
exit 0 
+0

'sftp.pl'이 정상적으로 작동한다고 생각합니까? 'stfp.pl'에 대한 링크를 게시 하시겠습니까 (아니면 충분한 경우 스크립트 자체)? – thb

+4

100 번 중 99 번 문제는 sftp.pl의 줄에있는 매개 변수 중 하나에 공백이있어서 매개 변수가 잘못된 순서로 종료되는 것입니다. sftp.pl에 모든 매개 변수를 두 번 넣으십시오.'' – Petesh

답변

1

무엇이 잘못되었는지를 판단하는 데 필요한 정보가 충분하지 않지만 여기에는 디버깅 방법이 있습니다. perl 스크립트의 실제 sftp 명령을 이와 같은 디버그 스크립트로 바꾸어보십시오. 문제를 빨리 찾을 수 있어야합니다.

#!/usr/bin/perl 
print "arguments passed to $0\n"; 
$i=0; 
while (defined $ARGV[$i]) { 
    print "arg ".($i+1)." is <$ARGV[$i++]>\n" 
} 
관련 문제