2011-06-24 8 views
1
#!/bin/sh 

LOCAL=/var/local 

TMP=/var/tmp 

URL=http://um10.eset.com/eset_upd 

USER="" 
PASSWD="" 

WGET="wget --user=$USER --password=$PASSWD -t 15 -T 15 -N -nH -nd -q" 

UPDATEFILE="update.ver" 

cd $LOCAL 

CMD="$WGET $URL/$UPDATEFILE" 
eval "$CMD" || exit 1; 
if [ -n "`file $UPDATEFILE|grep -i rar`" ]; then 
(
    cd $TMP 
    rm -f $TMP/$UPDATEFILE 
     unrar x $LOCAL/$UPDATEFILE ./ 
    ) 
     UPDATEFILE=$TMP/$UPDATEFILE 
     URL=`echo $URL|sed -e s:/eset_upd::` 
     fi 
     TMPFILE=$TMP/nod32tmpfile 
     grep file=/ $UPDATEFILE|tr -d \\r > $TMPFILE 
     FILELIST=`cut -c 6- $TMPFILE` 
     rm -f $TMPFILE 
     echo "Downloading updates..." 
     for FILE in $FILELIST; do 
     CMD="$WGET \"$URL$FILE\"" 
      eval "$CMD" 
      done 
      cp $UPDATEFILE $LOCAL/update.ver 
      perl -i -pe 's/\/download\/\S+\/(\S+\.nup)/\1/g' $LOCAL/update.ver 
      echo "Done." 

このコードでは、ウイルス対策の定義をダウンロードしています。唯一の問題は、スクリプトを実行するたびにすべてのファイルをダウンロードすることです。 「そのファイルが存在し、同じファイルサイズはそれをスキップしている場合は、」更新bashスクリプト、ファイルチェック、方法?

バッシュのLinux

+0

あなたは強制的に 'wget'を使いますか?これを行う正しい方法は、HTTP接続以外のものがある場合は 'rsync'を使用することです。 – a3nm

+0

私はrsyncが/ http htpasswd /に接続できないと思いますか、間違っていますか? – Cameleon

答えて

1

-nc引数には、のは、たとえば言わせ、?チェック何らかのファイルを実装することが可能である

wgetはすでに存在するファイルを再フェッチしません。ただし、-Nスイッチとの互換性はありません。 WGETの行を次のように変更する必要があります:

WGET="wget --user=$USER --password=$PASSWD -t 15 -T 15 -nH -nd -q -nc" 
+0

ファイルの中には同じファイル名であるがサイズが異なるものがありますが、ファイルサイズのチェックに引数が必要です。 – Cameleon

+0

ちょうど出力して、-Nは正常に動作します。じゃあ心配しないで。 – Cameleon

関連する問題