Atualização do FreeBSD

Publicado por Douglas Giorgio Fim (última atualização em 24/04/2010)

[ Hits: 5.505 ]

Homepage: http://freebsdwallpapers.blogspot.com/

Download dgfupdate.sh




Este script foi desenvolvido para facilitar a atualização do FreeBSD, mesmo quem não tem muito conhecimento consegue atualizar o sistema de uma forma simples e completa, ainda mostra os programas que precisam ser atualizados e é possível atualizar determinado programa ou todos sem complicação.

Também é possível usar alguns parâmetros "não obrigatórios":

-i - para você interagir com o script;
-v - para visualizar o a execução do script com mais detalhes;
numero - o número seria o tempo para começar a fazer a atualização, pode ser usada na inicialização do FreeBSD e colocar para inicializar a atualização depois de 30 segundos.

Modo de uso:

./dgfupdate.sh -i -v 10




Esconder código-fonte

#!/usr/local/bin/bash
# -----------------------------------------------------------------------
# - Feito por: Douglas Giorgio Fim               -
# - E-mail: douglasfim@yahoo.com.br                  -
# - MSN: dgf_skt@hotmail.com                  -
# - Programa: dgfupdate                     -
# - Versao: 1.0                        -
# -                           -
# - Este script pode ser alterado e distribuido por qualquer pessoa,   -
# - desde que este quadro se mantenha inalterado!         -
# -                            -
# - Obs.: Este script foi desenvolvido para facilitar a atualização do FreeBSD   -
# -----------------------------------------------------------------------

numero=
numero2="$numero"
verbose=

FIM() {
echo "Fim da atualização."
echo -n 'Aperte <Enter> para sair: '; read nada
exit 1
}

if [ -n "$1" ]; then
   if [ "$1" = '-v' ]; then
      verbose=1
   elif [ "$1" = '-i' ]; then
      atualizacao=
   else
      sleep $1
   fi
fi
if [ -n "$2" ]; then
   if [ "$2" = '-v' ]; then
      verbose=1
   elif [ "$2" = '-i' ]; then
      atualizacao=
   else
      sleep $2
   fi
fi
if [ -n "$3" ]; then
   if [ "$3" = '-v' ]; then
      verbose=1
   elif [ "$3" = '-i' ]; then
      atualizacao=
   else
      sleep $3
   fi
fi



echo "Atualizando as ports: "
if [ "$verbose" = '1' ]; then
   portsnap fetch update
   echo ''
else
   portsnap fetch update > /dev/null
fi

echo "Verificando as versões: "
verificacao=`portversion -v | grep -w '<' | awk '{print $1}' | sed -e 's/\(.*\)-\(.*\)/\1/;s/[ ]//g' | awk  'NF>0' | nl`

while [ "$resultado" != 'c' ]; do
if [ "$verificacao" != '' ]; then
   echo "$verificacao"
   while [ "$numero" = '' ]; do
      echo -n 'Digite o(s) numero(s) do(s) programa(s) que deseja atualizar, 0 para todos ou "c" para cancelar: ' ; if [ -z "$numero" ]; then read numero; fi
   done
   verificacao2=`echo "$verificacao" | grep -w "$numero" | awk '{print $2}'`
   escolha=`echo "$numero" | grep -w '0' | sed 's/[ ]//g'`
   escolha2=`echo "$numero" | grep -w [cC] | sed 's/[ ]//g' | tr '[:upper:]' '[:lower:]'`
   
   if [ "$escolha" = '0' ]; then
      if [ "$escolha2" = 'c' ]; then
         echo "Parametro invalido."
         exit 1
      else
         resultado='0'
      fi
   elif [ "$escolha2" = 'c' ]; then
      resultado='c'
   fi
   
   case $resultado in
   0)
      echo -n "0 para atualização simples, 1 para atualização avançada: "; if [ -z "$nivel" ]; then read nivel; fi
      if [ -z "$nivel" ]; then
        nivel=0
      fi
      if [ "$nivel" = '0' ]; then
        for i in `echo "$verificacao" | awk '{print $2}'`; do
           echo "atualizando $i"
           portupgrade -PRDuk $i
        done
      elif [ "$nivel" = '1' ]; then
        echo "Atualizando..."
        portupgrade -PRDuka
      fi
      echo "Atualização completada"
      FIM ;;
   c)
      echo "Atualização cancelada."
      exit 1 ;;
   *)
      for i in `echo "$verificacao2"`; do
         echo "atualizando $i"
         portupgrade -PRDuk $i
      done
      verificacao=`portversion -v | grep -w '<' | awk '{print $1}' | sed -e 's/\(.*\)-\(.*\)/\1/;s/[ ]//g' | awk  'NF>0' | nl`
      ;;
   esac
else
   echo "Seu sistema ja está atualizado."
   resultado='c'
fi
numero=
done

FIM

Scripts recomendados

Script contra ataques de Brutal Force por SSH.

Copia arquivos distribuidos em pastas diferentes para uma única pasta.

Descompactar vários arquivos ao mesmo tempo de um diretório específico

diskspacewarn.sh

Adicionar usuarios em lote com senha padrao

Comentários
[1] Comentário enviado por irado em 25/04/2010 - 11:56h

oi, douglas.

notei que NÃO É atualização completa do sistema, mas apenas atualização do ports, que é UMA das etapas apenas. Mas já está de bom tamanho :)

flames > /dev/null

[2] Comentário enviado por albertguedes em 25/04/2010 - 15:45h

E Viva o FreeBSD !

[3] Comentário enviado por alaxricard em 26/04/2010 - 12:56h

Amigo o FreeBSD ele naum tem em português e por enquantos eu só estou ultilizando os Linux em português pra pegar a pratica.

[4] Comentário enviado por douglas.giorgio em 23/08/2010 - 12:00h

na verdade ele só atualiza as ports, o FreeBSD em si não, por enquanto não, ja criei uma nova atualização, tive que refazer quase tudo e ainda não terminei, vou colocar a opção de atualizar o sistema por completo


Contribuir com comentário