melhorar script [RESOLVIDO]

1. melhorar script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/01/2011 - 22:21h

acabei de publicar um script aki no VOL, eu não achei mais nada que eu possa alterar no momento

mas sei que tem uns feras aki no VOL que possa me dar uma ajuda

o script cria ports no slackware com scripts do slackbuilds, o unico acesso a internet é para baixar um arquivo de configuração de 2MB, todo o ports é baseado nesse arquivo

a logica que eu usei foi bacana, pois só baixa os scripts do slackbuilds quando vai instalar o programa.

o problema que vi, é que ele não chegou a usar totalmente o meu processador e nem o HD na criação do ports, agr o pq eu não sei, queria saber se tem alguma forma de otimização em shellscript, multi-thread ou qualquer coisa que melhore

o script eu vou colocar no post seguinte


  


2. script

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/01/2011 - 22:21h

#!/bin/bash
# -----------------------------------------------------------------------
# - Feito por: Douglas Giorgio Fim -
# - E-mail: douglasfim@yahoo.com.br -
# - Programa: dgfports -
# - Versao: x.x -
# - -
# - Este script pode ser alterado e distribuido por qualquer pessoa, -
# - desde que este quadro se mantenha inalterado. -
# - -
# - Obs.: Este script foi desenvolvido para criação de ports com -
# - scripts do slackbuilds.org. -
# - Estes scripts não resolvem dependencias. -
# - Não me responsabilizo pelas alterações do usuário. -
# -----------------------------------------------------------------------
#
# recomendo alterar somente as variaveis.

DIRPORTS=/usr/local/dgfports # defina aqui o diretorio padrão do ports, evite colocar diretorio existente.
SLACK_VERSION=13.1 # defina aqui a versão de seu slackware, esse valor tem que ser o mesmo do slackbuilds.org

# script direcionado para download.sh
EXAMPLE_SCRIPT='
#!/bin/bash

ARCH=`uname -m`

case $1 in
-h|help|-help|--help)
echo "
Download SlackBuild script -> download program
./download.sh

Download SlackBuild script -> download program -> run SlackBuild script
./download.sh makepkg

Install Package
./download.sh installpkg

Download SlackBuild script -> Download program -> run SlackBuild script -> Install Package
./download.sh all

Clean
./download.sh clean
"
exit 1
;;

clean)
for i in `ls | grep -v download.sh`; do rm -rf $i ; done
exit 1
;;

esac
'

# script direcionado para download.sh
EXAMPLE_SCRIPT2='
PRGNAM=`more *.info | grep PRGNAM | cut -d= -f2 | sed s/\"//g`
VERSION=`more *.info | grep VERSION | cut -d= -f2 | sed s/\"//g`
LINK1=`more *.info | grep DOWNLOAD_x86_64= | cut -d= -f2 | sed s/\"//g`
LINK2=`more *.info | grep DOWNLOAD= | cut -d= -f2 | sed s/\"//g`

if [ "$ARCH" == "x86_64" ]; then
if [ "$LINK1" == "" ];then
LINK_DOWNLOAD="$LINK2"
else
LINK_DOWNLOAD="$LINK1"
fi
else
LINK_DOWNLOAD="$LINK2"
fi

case $1 in

makepkg)
wget -c "$LINK_DOWNLOAD"
chmod +x ./$PRGNAM.SlackBuild ; ./$PRGNAM.SlackBuild
exit 1
;;

installpkg)
installpkg /tmp/$PRGNAM-$VERSION-$ARCH-*.t?z
exit 1
;;

all)
wget -c "$LINK_DOWNLOAD"
chmod +x ./$PRGNAM.SlackBuild ; ./$PRGNAM.SlackBuild && installpkg /tmp/$PRGNAM-$VERSION-`uname -m`-*.t?z
exit 1
;;

esac

wget -c "$LINK_DOWNLOAD"
'

# parametro para remoção do ports
if [ "$1" == -r ]; then
echo "Removendo o DGFPorts..."
rm -rf $DIRPORTS
echo "Remoção concluida!"
exit 1
fi

mkdir -p "$DIRPORTS" || exit 1
cd "$DIRPORTS" || exit 1

rm -rf SLACKBUILDS.TXT*
wget ftp://slackbuilds.org/$SLACK_VERSION/SLACKBUILDS.TXT
mkdir -p "$DIRPORTS/DISTFILES"

# cria os diretorios, não é recomendavel alterar
more SLACKBUILDS.TXT | for i in `grep LOCATION: | awk '{print $3}'` ; do mkdir -pv $i ;done

# função criada para criação de novas funções ao script
RECURS() {
for DIR in `ls -l "$DIRPORTS" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do
cd "$DIRPORTS/$DIR"
for SUB_DIR in `ls -l "$DIRPORTS/$DIR" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do
cd "$DIRPORTS/$DIR/$SUB_DIR"
$*
done
done
}
# Exemplo de uso:
#
# RECURS 'touch download.sh'
# RECURS 'chmod +x download.sh'

# remoção e criação de scripts, não é recomendavel alterar
for DIR in `ls -l "$DIRPORTS" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do
cd "$DIRPORTS/$DIR"
for SUB_DIR in `ls -l "$DIRPORTS/$DIR" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do
cd "$DIRPORTS/$DIR/$SUB_DIR"
echo "Removendo script $DIRPORTS/$DIR/$SUB_DIR/download.sh"
rm -rf download.sh
echo "Criando script $DIRPORTS/$DIR/$SUB_DIR/download.sh"
touch download.sh
chmod +x download.sh
echo "$EXAMPLE_SCRIPT" >> download.sh
echo "wget -c ftp://slackbuilds.org/$SLACK_VERSION/$DIR/$SUB_DIR/*"; >> download.sh
echo "$EXAMPLE_SCRIPT2" >> download.sh
done
done


3. Re: melhorar script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/01/2011 - 16:24h

toda vez que executa, tem que baixar o SLACKBUILDS.TXT

wget ftp://slackbuilds.org/$SLACK_VERSION/SLACKBUILDS.TXT

o pior é que ele roda tooodo o script novamente, teria alguma forma de ver se a versão do SLACKBUILDS.TXT é atual??

pois assim evita ter que baixar novamente e rodar todo o script novamente


4. Re: melhorar script [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 31/01/2011 - 16:46h

Tenta realizar comparações via rsync ou mesmo o diff.


5. Re: melhorar script [RESOLVIDO]

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 31/01/2011 - 17:02h

Cara,

tenta usar uma hash do arquivo que você já tem e compará-la com o que você baixou. Tipo:

atual=`md5sum arquivo.txt`
novo=`md5sum arquivo_novo.txt`
if [ $atual -eq $novo ] then executa_script
fi




6. Re: melhorar script [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 31/01/2011 - 17:19h

Boa também... lembrando que nesse caso, ficaria algo como:

atual=`md5sum arquivo_atual | awk '{print $1}'
novo=`md5sum arquivo_novo | awk '{print $1}'

if [ "$novo" = "$atual" ]
then
echo "A sua versão é a mais recente"
else
echo "A sua versão está desatualizada"
fi



7. Re: melhorar script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/01/2011 - 18:06h

acho que vou usar o md5

ja rsync, eu ja tinha pensado em usar, e inda vou usar, mas somente para atualizar os scripts/arquivos das ports

nesse caso seria algo assim

/path/path/ports/network/opera/arquivo.tal

pois estou usando o wget -c

caso ja tenha usado a ports opera antes da atualização, ele não vai atualizar os scripts pois eles ja estão la

usando o rsync ficaria algo semelhante do ports BSD

========================

estou tentando assim

rsync -ravzup ftp.slackbuilds.org:/13.1/network/opera/ ./

mas pede senha, como eu faço p não pedir senha?? afinal eu não tenho


8. Bin Laden está correto

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 31/01/2011 - 20:33h

Correto, Bin Laden. Me esqueci deste detalhe.


9. Re: melhorar script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/01/2011 - 21:11h

deixei assim

=================

wget ftp://slackbuilds.org/$SLACK_VERSION/SLACKBUILDS.TXT -O SLACKBUILDS.TXT.new

ATUAL=`md5sum $DIRPORTS/SLACKBUILDS.TXT | awk '{print $1}'`
NOVO=`md5sum $DIRPORTS/SLACKBUILDS.TXT.new | awk '{print $1}'`

if [ "$NOVO" == "$ATUAL" ] ; then
echo "A sua versão é a mais recente"
echo "Deseja dar sequencia assim mesmo? [y/N]" ; read ESCOLHA
case $ESCOLHA in
n|N|"") exit 1 ;;
y|Y) echo "" ;;
*) echo "Parametro invalido!" ; exit 1 ;;
esac
fi

mv $DIRPORTS/SLACKBUILDS.TXT.new $DIRPORTS/SLACKBUILDS.TXT

=====================

em relação ao rsync, ja desisti, procurei alternativas, mas não consegui






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts