Ferramentas do usuário

Ferramentas do site


post.sh

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.

#!/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” RECEBE=“recebe.php” PASTA=“zzz/`pwd | sed -e 's/.*\/'`” export http_proxy=“http://conta:senha@10.0.0.2:8080” LOG=`date +%Y%m%d`-log.txt # Antes de tudo, criando pasta destino $WGET -O saida –post-data=“criapasta=$PASTA” $URL/$RECEBE 2> /dev/null # Depois altera a URL para postar direto para a pasta criada URL=“$URL/$PASTA/$RECEBE” 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.” » $LOG else echo “`date '+%Y/%m/%d-%H:%M:%S'` - $ARQFIN transmitido com erro.” » $LOG 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.” » $LOG mv $ARQ foi-$ARQ else echo “`date '+%Y/%m/%d-%H:%M:%S'` - $ARQ juntado com erro.” » $LOG fi fi rm -f saida query_string done

post.sh.txt · Última modificação: 2009/02/17 19:20 por cartola