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 anterior Revisão anterior
post.sh [2008/11/05 17:13]
cartola tentando terminar ajustes para envio de timestamp - ainda ruim
post.sh [2009/02/17 19:20] (atual)
cartola nova versao que faz upload direto para subpasta
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. 
  
  
Linha 14: Linha 14:
 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}.* +
-      $WGET -O saida --post-data="juntar=$ARQ" $URL > /dev/null 2> /dev/null +
-      # conferindo arquivo com md5 +
-      MD5local=`$MD5CMD $ARQ | awk '{print $NF}'+
-      MD5remoto=`cat saida | grep "$ARQ : " | awk '{print $NF}'+
-      # 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}'+
-      # retomando verificacao md5 +
-      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
-    # finalizando ajuste de data remoto 
-    $WGET -O saida --post-data="touch=$ARQ&ts=$TS" $URL > /dev/null 2> /dev/null 
-    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