Ferramentas do usuário

Ferramentas do site


post.sh

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
post.sh [2008/11/05 16:28] cartolapost.sh [2009/02/17 19:20] (atual) – nova versao que faz upload direto para subpasta cartola
Linha 1: Linha 1:
-Script principal "post.sh", que chama "[[post.php]]" e envia arquivos para "[[recebe.php]]"+Script principal "post.sh", que chama "[[post.php]]" e envia arquivos para "[[recebe.php]]" 
  
-Atenção: esse script se tornou dependente de FreeBSD com o uso do "ls -lT" para obter timestamp do arquivo na origem. Não obstante funcionará, sem ajustar timestamp, em outros sistemas.+**Atenção:** esse script se tornou dependente de FreeBSD com o uso do "ls -lT" para obter timestamp do arquivo na origem. Não obstante funcionará, sem ajustar timestamp, em outros sistemas. 
  
  
 #!/bin/sh #!/bin/sh
 + 
 # Script para enviar arquivos via web para servidor http. Este servidor precisa ter o arquivo # 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 # recebe.php especifico. A ideia eh partir os arquivos a serem enviados em blocos de tamanho
 # limite para transferencia. # limite para transferencia.
 + 
 LIMITE="5000000" LIMITE="5000000"
 WGET="/usr/local/bin/wget" WGET="/usr/local/bin/wget"
 MD5CMD="/sbin/md5" MD5CMD="/sbin/md5"
 URL="http://servidor.remoto.com/caminhoQualquer/recebe.php" URL="http://servidor.remoto.com/caminhoQualquer/recebe.php"
 +RECEBE="recebe.php"
 +PASTA="zzz/`pwd | sed -e 's/.*\///'`"
 export http_proxy="http://conta:senha@10.0.0.2:8080" export http_proxy="http://conta:senha@10.0.0.2:8080"
 +LOG=`date +%Y%m%d`-log.txt
  
-if [ -saida ]; then +# Antes de tudo, criando pasta destino 
-  echo "Erro: arquivo \"saida\" ja existe+$WGET -saida --post-data="criapasta=$PASTA$URL/$RECEBE 2> /dev/null 
-  exit +# Depois altera a URL para postar direto para a pasta criada 
-fi+URL="$URL/$PASTA/$RECEBE"
  
 for ARQ in $*; do for ARQ in $*; do
-  # Verificando se pode ser enviado o arquivo - negado se ja existir com mesmo nome +  # Verificando necessidade de partir e partindo 
-  $WGET -O saida "${URL}?verifica=$ARQ" 2> /dev/null > /dev/null +  TAM=`ls -$ARQ | awk '{print $5}'
-  TESTE=`grep ERRO saida+  if [ $TAM -gt $LIMITE ]; then 
-  if [ "$TESTE" = "ERRO" ]; then +    split -b $LIMITE $ARQ ${ARQ}. 
-    echo "Erro: $ARQ ja existe no servidor"+    ENVIAR=`ls ${ARQ}.*`
   else   else
-    # Verificando necessidade de partir partindo +    ENVIAR="$ARQ" 
-    TAM=`ls -l $ARQ | awk '{print $5}'` +  fi 
-    if [ $TAM -gt $LIMITE ]; then +  Enviando arquivo inteiro ou pedacos 
-      split -b $LIMITE $ARQ ${ARQ}. +  for ARQFIN in $ENVIAR; do 
-      ENVIAR=`ls ${ARQ}.*`+    /usr/local/bin/php -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." >> $LOG
     else     else
-      ENVIAR="$ARQ"+      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro.>> $LOG
     fi     fi
-    # Enviando arquivo inteiro ou pedacos +  done 
-    for ARQFIN in $ENVIAR; do +  # Juntando arquivo remoto, se necessario 
-      /usr/local/bin/php -e post.php $ARQFIN +  if [ "$ARQ" != "$ENVIAR" ]; then 
-      $WGET -O saida --post-file=query_string $URL \ +    rm -f ${ARQ}.* 
-            > /dev/null 2> /dev/null +    $WGET -O saida --post-data="juntar=$ARQ" $URL > /dev/null 2> /dev/null 
-      MD5local=`$MD5CMD $ARQFIN | awk '{print $NF}'+    MD5local=`$MD5CMD $ARQ | awk '{print $NF}'
-      MD5remoto=`cat saida | grep "$ARQFIN : " | awk '{print $NF}'+    MD5remoto=`cat saida | grep "$ARQ : " | awk '{print $NF}'
-      if [ "$MD5local" = "$MD5remoto" ]; then +    if [ "$MD5local" = "$MD5remoto" ]; then 
-        echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido ok." +      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado ok." >> $LOG 
-      else +      mv $ARQ foi-$ARQ 
-        echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro." +    else 
-      fi +      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado com erro." >> $LOG
-    done +
-    # Juntando arquivo remoto, se necessario +
-    # Aproveitando para acertar data do arquivo conforme arquivo local +
-    if [ "$ARQ" != "$ENVIAR" ]; then +
-      rm -f ${ARQ}.* +
-      # calculando timestamp do arquivo para acertar no servidor +
-      export LC_ALL="en_us.ISO8859-1" +
-      TS=`ls -lT $ARQ | awk '{printf "%02s %s %s %s\n", $6, $7, $8, $9}' | \ +
-        sed -e 's/Jan/01/'+
-            -e 's/Feb/02/' -e 's/Fev/02/'+
-            -e 's/Mar/03/'+
-            -e 's/Apr/04/' -e 's/Abr/04/'+
-            -e 's/May/05/' -e 's/Mai/05/'+
-            -e 's/Jun/06/'+
-            -e 's/Jul/07/'+
-            -e 's/Aug/08/' -e 's/Ago/08/'+
-            -e 's/Sep/09/' -e 's/Set/09/'+
-            -e 's/Oct/10/' -e 's/Out/10/'+
-            -e 's/Nov/11/'+
-            -e 's/Dec/12/' -e 's/Dez/12/'+
-            -e 's/://' -e 's/:/./' | \ +
-        awk '{printf "%s%s%s%s",$4,$2,$1,$3}'+
-      $WGET -O saida --post-data="juntar=$ARQ&ts=$TS" $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     fi
-    rm -f saida query_string 
   fi   fi
 +  rm -f saida query_string
 done done
  
post.sh.txt · Última modificação: 2009/02/17 19:20 por cartola