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

Próxima revisãoAmbos lados da revisão seguinte
post.sh [2008/10/15 09:33] – Nova página: Script principal "post.sh", que chama "[[post.php]]" e envia arquivos para "[[recebe.php]]" <source lang="bash"> #!/bin/sh # Script para enviar arquivos via web para servidor http. E... cartolapost.sh [2008/11/05 16:28] 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.
  
  
Linha 13: Linha 15:
 URL="http://servidor.remoto.com/caminhoQualquer/recebe.php" URL="http://servidor.remoto.com/caminhoQualquer/recebe.php"
 export http_proxy="http://conta:senha@10.0.0.2:8080" export http_proxy="http://conta:senha@10.0.0.2:8080"
 +
 +if [ -f saida ]; then
 +  echo "Erro: arquivo \"saida\" ja existe"
 +  exit
 +fi
  
 for ARQ in $*; do for ARQ in $*; do
-  # Verificando necessidade de partir e partindo +  # Verificando se pode ser enviado o arquivo - negado se ja existir com mesmo nome 
-  TAM=`ls -$ARQ | awk '{print $5}'+  $WGET -O saida "${URL}?verifica=$ARQ" 2> /dev/null > /dev/null 
-  if [ $TAM -gt $LIMITE ]; then +  TESTE=`grep ERRO saida
-    split -b $LIMITE $ARQ ${ARQ}. +  if [ "$TESTE" = "ERRO" ]; then 
-    ENVIAR=`ls ${ARQ}.*`+    echo "Erro: $ARQ ja existe no servidor"
   else   else
-    ENVIAR="$ARQ" +    # Verificando necessidade de partir partindo 
-  fi +    TAM=`ls -l $ARQ | awk '{print $5}'` 
-  Enviando arquivo inteiro ou pedacos +    if [ $TAM -gt $LIMITE ]; then 
-  for ARQFIN in $ENVIAR; do +      split -b $LIMITE $ARQ ${ARQ}. 
-    /usr/local/bin/php -post.php $ARQFIN +      ENVIAR=`ls ${ARQ}.*`
-    $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     else
-      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro."+      ENVIAR="$ARQ"
     fi     fi
-  done +    # Enviando arquivo inteiro ou pedacos 
-  # Juntando arquivo remoto, se necessario +    for ARQFIN in $ENVIAR; do 
-  if [ "$ARQ" != "$ENVIAR" ]; then +      /usr/local/bin/php -e post.php $ARQFIN 
-    rm -f ${ARQ}.* +      $WGET -O saida --post-file=query_string $URL \ 
-    $WGET -O saida --post-data="juntar=$ARQ" $URL > /dev/null 2> /dev/null +            > /dev/null 2> /dev/null 
-    MD5local=`$MD5CMD $ARQ | awk '{print $NF}'+      MD5local=`$MD5CMD $ARQFIN | awk '{print $NF}'
-    MD5remoto=`cat saida | grep "$ARQ : " | awk '{print $NF}'+      MD5remoto=`cat saida | grep "$ARQFIN : " | awk '{print $NF}'
-    if [ "$MD5local" = "$MD5remoto" ]; then +      if [ "$MD5local" = "$MD5remoto" ]; then 
-      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado ok." +        echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido ok." 
-      mv $ARQ foi-$ARQ +      else 
-    else +        echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro." 
-      echo "`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado com erro."+      fi 
 +    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