2010-12-08 11 views
1
にリモートファイルと起動や他のスクリプトの書き込みをダウンロードする

私は、ファイルがうまくダウンロードされた場合、それはのcurl.Itの種類とPHPで別のスクリプトを起動し、FTPプロトコルを使用してリモートファイルを取得するシェルスクリプトを作りました今働いて、私は改善するためにいくつかの質問を持っている:シェルスクリプトはPHP

  • は、スクリプトの残りの部分を実行するために、ダウンロードの終了をスクリプトを待っているか、またはダウンロードの時間の間、スクリプトは次の手順を実行しますか?
  • 私が始まる命令の最初のメールを受信しますが、決して最後のもの(カールの結果を得る1、およびスクリプトの端に1つ)がどのように来ますか?
  • (アーカイブがダウンロードされている場合)、私はそれがcrontabファイルにすべての時間を起動します場合でも、複数回実行するスクリプトを禁止するための良い方法を見つけたいですか?
  • ftp接続の終了時にquit/bye/byの違いは何ですか?

これは、シェルスクリプトです:?

echo start of the script | mail -s "beginning of the script" [email protected] 

cd /my_rep 

HOST='domaine.com' 
PORT='21' 
USER='admin' 
PASSWD='pass' 

jour=$(date "+%Y%m%d") 
FILE="file_"$jour".txt"; 

ftp -i -n $HOST $PORT <<EOF 
quote USER $USER 
quote PASS $PASSWD 
cd firstlevel 
cd end 

get $FILE 
quit 
EOF 

if test -f $FILE 
then 
    CurlRes="$(curl "http://doma.com/myfile.php")" 

    echo debug CURL : $CurlRes | mail -s "debug" [email protected] 

else 
    echo no file : $FILE | mail -s "no file" [email protected] 
fi 

echo this is the end of the script download | mail -s "end of script download" [email protected] 

答えて

0

スクリプトが スクリプトの残りの部分を実行するために、ダウンロード の終了を待っているか の時間の間にスクリプトをダウンロードされています次の手順を実行します ?あなたが意味する場合

「FTPコマンドブロック終了するまでの?」答えは「はい」です。

私は初め 命令の最初のメールを受信決して最後のものは ( カールの結果を得る1、および スクリプトの終わりに1)どのように来ますか?

は、あなたのコードを見てみましょう:

then 
    CurlRes="$(curl "http://doma.com/myfile.php")" 

    echo debug CURL : $CurlRes | mail -s "debug" [email protected] 

else 
    echo no file : $FILE | mail -s "no file" [email protected] 
fi 

$ CurlResと$ FILEの内容は、それぞれ何ですか。 $ {CurlRes}と$ {FILE}を試してください。私はまた、echoを使用するときに文字列を引用することをお勧めします。

あなたはその上でチェックしたスパムフィルタは、メッセージを好きではないことを良いチャンスでもあるのでしょうか?

私はそれがcrontabファイルを持つすべての 時間を起動します場合でも(アーカイブは がダウンロードされている場合)を1回以上 以上を実行するスクリプトを許可しない に良い方法を見つけたいですか?いくつかの方法で行うことができる

。成功した場合は、ファイル名をsuccessful_downloaded.txtのようなものの一番下にエコーし、grepを使用してファイル名がリストに含まれているかどうかを確認します。使用に応じて、そのファイルはかなり大きくなる可能性があります。そのため、回転させる手段も実装しています。

男から(3)ftp

bye   Terminate the FTP session with the remote server and exit ftp. 
      An end of file will also terminate the session and exit. 


quit  A synonym for bye. 

byは、私の知る限り、またbyeの同義語です。

+0

ほとんどのFTPクライアントはあなたがいずれかの終わりを省略することができます結果が曖昧でない場合は、コマンドを使用します。 1つのコマンドだけが 'by'で始まるので、あなたは' bye'を意味すると推定されます。 – Sorpigal

+0

引数を 'echo'にクォートすることは害はなく、中括弧もどちらも必要ありません。何らかの理由でスクリプトが中断しているか、ここの文書に問題があるため、OPがメールを受け取っていないと言います。 –

0

これは、すべてのコストで回避する必要があります。キーで

USER='admin' 
PASSWD='pass' 

使用SSHのSCP(必須プロンプトパスワードなし):

Linux Journal article howto

+0

これは良いアドバイスです –

関連する問題