Ferramentas do usuário

Ferramentas do site


post.sh

Essa é uma revisão anterior do documento!


Script principal “post.sh”, que chama “post.php” e envia arquivos para “recebe.php

#!/bin/sh

# Script para enviar arquivos via web para servidor http. Este servidor precisa ter o arquivo # recebe.php especifico. A ideia eh partir os arquivos a serem enviados em blocos de tamanho # limite para transferencia.

LIMITE=“5000000” WGET=“/usr/local/bin/wget” MD5CMD=“/sbin/md5” URL=“http://servidor.remoto.com/caminhoQualquer/recebe.php” export http_proxy=“http://conta:senha@10.0.0.2:8080

for ARQ in $*; do

# Verificando necessidade de partir e partindo
TAM=`ls -l $ARQ | awk '{print $5}'`
if [ $TAM -gt $LIMITE ]; then
  split -b $LIMITE $ARQ ${ARQ}.
  ENVIAR=`ls ${ARQ}.*`
else
  ENVIAR="$ARQ"
fi
# Enviando arquivo inteiro ou pedacos
for ARQFIN in $ENVIAR; do
  /usr/local/bin/php -e post.php $ARQFIN
  $WGET -O saida --post-file=query_string $URL \
        > /dev/null 2> /dev/null
  MD5local=`$MD5CMD $ARQFIN | awk '{print $NF}'`
  MD5remoto=`cat saida | grep "$ARQFIN : " | awk '{print $NF}'`
  if [ "$MD5local" = "$MD5remoto" ]; then
    echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido ok."
  else
    echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro."
  fi
done
# Juntando arquivo remoto, se necessario
if [ "$ARQ" != "$ENVIAR" ]; then
  rm -f ${ARQ}.*
  $WGET -O saida --post-data="juntar=$ARQ" $URL > /dev/null 2> /dev/null
  MD5local=`$MD5CMD $ARQ | awk '{print $NF}'`
  MD5remoto=`cat saida | grep "$ARQ : " | awk '{print $NF}'`
  if [ "$MD5local" = "$MD5remoto" ]; then
    echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado ok."
    mv $ARQ foi-$ARQ
  else
    echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado com erro."
  fi
fi
rm -f saida query_string

done

post.sh.1224074016.txt.gz · Última modificação: 2008/10/15 09:33 por cartola