2012-04-05 11 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の行にあるパラメータの1つにスペースがあり、パラメータの順序が乱れることです。すべてのパラメータをsftp.plに二重のqoutesでカプセル化してみてください。 '' ' – 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" 
} 
関連する問題