Bem-vindo: Ter, 26 de Novembro 2024, 23:25 Pesquisa avançada

Script para atualização do kernel

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

Script para atualização do kernel

Mensagempor paulosubs » Qua, 17 de Julho 2013, 22:53

Bom, o objetivo desse script é identificar a ultima versão estável do kernel disponível em kernel.ubuntu.com, verificar se corresponde com a ultima versão instalada no computador e descarregar e instalar (e eventualmente remover o kernel precedente).

Os espertos que tenham piedade de mim pois certamente terá um modo muito mais bonito e eficaz pra obter o mesmo resultado.

Quem tiver paciência pra me dar uma mãozinha pra melhorar esse scrip seja bem vindo!


Paulo

Atualizações:
20/07 - substituido o lynx
26/07 + verifica de conexão


Código: Selecionar todos
#!/bin/sh

#   https://www.dropbox.com/s/7sqojrtgfpax955/updatekernel.sh

##check connection
if ! [ "$(ping -c 1 kernel.ubuntu.com)" ]; then echo "\n\tConnect and try again.\n"; exit ; fi

##check install wget html2text
for n in wget html2text; do if ! [ "$(which $n)" ]; then sudo apt-get install -y $n ; fi  ; done

http="http://kernel.ubuntu.com/~kernel-ppa/mainline/"
folderversion=$(wget -q -O- $http | html2text  | grep DIR |  cut -d " " -f 2 | grep -v rc | tail -n 1)
LinkLastVersion=${http}${folderversion}
LastKernelAvaliable=$(echo $folderversion | cut -d "-" -f1 | tr -d v )
#if is a first major revision (es.: 3.10) add ".0" (es.: 3.10.0)
if [ -z $(echo $LastKernelAvaliable | cut -d "." -f3) ]  ; then LastKernelAvaliable=${LastKernelAvaliable}".0"; fi 

LastKernelInstalled=$(ls /boot/ | grep img | cut -d "-" -f2 | sort -V  | tail -n 1)

if [ $LastKernelInstalled = $LastKernelAvaliable ]
   then echo  "\n\n\t Your kernel is updated: " $LastKernelInstalled  "\n\n"
   exit
   else echo  "\n\n\t Your Kernel is:   " $LastKernelInstalled  "\n\t Kernel Avaliable: " $LastKernelAvaliable  "\n\n"
   sleep 2 ; read -p "Press Enter to install the last version, or abort by pressing CTRL+C" nothing
fi

#arch
arch=`uname -m`
if  [ $arch = i686 ] || [ $arch = i386 ]; then myarch="i386"; elif [ $arch = "x86_64" ]; then myarch="amd64"; else echo "Unsupported Architecture"; fi

#### list links to download
listdebs=$( wget -q -O- $LinkLastVersion  | html2text  -width 200   | tr [:blank:]  + | cut -d "+" -f 5  | egrep 'all.deb|'$myarch'.deb')
linkdebs=$(for deb in $listdebs; do echo $LinkLastVersion$deb; done)

#### download, install and remove folder download
DownloadFolder=/tmp/kernel_$LastKernelAvaliable  ; mkdir -p $DownloadFolder ; cd $DownloadFolder
wget $( echo "$linkdebs" )
sudo dpkg -i *.deb
sudo rm -rf $DownloadFolder


### Remove old kernel
OldVersion=$(ls /boot/ | grep img | cut -d "-" -f2,3 | sort -V | tail -n2 | head -n1)
ifremove="Press Enter to remove the old kernel $OldVersion, or abort by pressing CTRL+C"
echo "/n/n"  ;  read -p "$ifremove" nothing
sleep 3 ; echo "/n/n"
read -p "Are you sure? $ifremove" nothing
sudo apt-get remove $OldVersion

Editado pela última vez por paulosubs em Sáb, 27 de Julho 2013, 11:20, em um total de 5 vezes.

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Re: Script para atualização do kernel

Mensagempor paulosubs » Sáb, 20 de Julho 2013, 22:34

Consegui substituir o lynx combinando o wget com o html2text:

Código: Selecionar todos
wget -q -O- http://kernel.ubuntu.com/~kernel-ppa/mainline/ | html2text  | grep DIR |  cut -d " " -f 2 | grep -v rc | tail -n 1
Editado pela última vez por paulosubs em Seg, 22 de Julho 2013, 18:44, em um total de 1 vez.

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Re: Script para atualização do kernel

Mensagempor CelticWarrior » Dom, 21 de Julho 2013, 4:32

Alguma razão para não incluir suporte a armhf?
Galiza Nação!
Avatar do usuário
CelticWarrior
 
Mensagens: 136
Registrado em: 16 Julho, 2013

Re: Script para atualização do kernel

Mensagempor Rafael Schonberg » Dom, 21 de Julho 2013, 11:31

Se eu ja tiver o último ele sabe e não faz download?
O homem não consegue descobrir novos oceanos se não tiver a coragem de perder de vista a costa. — André Gide
Avatar do usuário
Rafael Schonberg
 
Mensagens: 901
Registrado em: 19 Novembro, 2012

Re: Script para atualização do kernel

Mensagempor Claudio Novais » Dom, 21 de Julho 2013, 14:48

Olá @paulosubs,

Desculpe ter demorado a responder, mas tenho andado sem tempo. Quero desde já agradecer o facto de você ter feito duas coisas que pedi: divulgar aqui no FOrum e tentar não usar pacotes extra, nomeadamente o browser lynx.

Ainda não analisei o seu script nem testei, mas em princípio amanhã faço uma análise e muito provavelmente irei começar a referi-lo nos artigos de novos Kernels! ;)

Mais uma vez, parabéns pela excelente iniciativa!! :yeah:
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Script para atualização do kernel

Mensagempor paulosubs » Dom, 21 de Julho 2013, 20:32

CelticWarrior (21-07-2013, 4:32) escreveu:Alguma razão para não incluir suporte a armhf?

Nunca testei essa arquitetura, e olhando o site kernel.ubuntu.com e não achei os pacotes disponiveis.

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Re: Script para atualização do kernel

Mensagempor paulosubs » Dom, 21 de Julho 2013, 20:36

Rafael Schonberg (21-07-2013, 11:31) escreveu:Se eu ja tiver o último ele sabe e não faz download?

O script verifica qual è a versão mais recente instalada no computador e depois ele a compara com a ultima disponivel no site, e se são iguais ele so' avisa que seu computador jà està atualizado.

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Re: Script para atualização do kernel

Mensagempor paulosubs » Dom, 21 de Julho 2013, 20:41

Claudio Novais (21-07-2013, 14:48) escreveu:Olá @paulosubs,

Desculpe ter demorado a responder, mas tenho andado sem tempo. Quero desde já agradecer o facto de você ter feito duas coisas que pedi: divulgar aqui no FOrum e tentar não usar pacotes extra, nomeadamente o browser lynx.

Ainda não analisei o seu script nem testei, mas em princípio amanhã faço uma análise e muito provavelmente irei começar a referi-lo nos artigos de novos Kernels! ;)
Mais uma vez, parabéns pela excelente iniciativa!! :yeah:

Iniciei mesmo sò por brincadeira... mas depois decidi divulga-lo pra poder dar a minha mini/micro contribuição à comunidade!
Obrigado pelo interesse!

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Re: Script para atualização do kernel

Mensagempor CelticWarrior » Dom, 21 de Julho 2013, 21:36

paulosubs (21-07-2013, 20:32) escreveu:
CelticWarrior (21-07-2013, 4:32) escreveu:Alguma razão para não incluir suporte a armhf?

Nunca testei essa arquitetura, e olhando o site kernel.ubuntu.com e não achei os pacotes disponiveis.


Tem toda a razão. É um port e por isso aparentemente não está disponível como tal tendo que ser compilado a partir do x86.

https://wiki.ubuntu.com/KernelTeam/ARMKernelCrossCompile
Galiza Nação!
Avatar do usuário
CelticWarrior
 
Mensagens: 136
Registrado em: 16 Julho, 2013

nova versao

Mensagempor paulosubs » Qui, 25 de Julho 2013, 19:04

Estou testando uma versao com um menu simples:

Se o úlltimo kernel não esta instalado ele pergunta se o quer instalar, e se já esta instalado pergunta se o quer remover. Oferece também a opção de remover o penúltimo kernel.

Código: Selecionar todos
#!/bin/bash

##check connection
if ! [ "$(ping -c 1 kernel.ubuntu.com)" ]; then echo "\n\tConnect and try again.\n"; exit ; fi

##check install wget html2text
for n in wget html2text; do if ! [ "$(which $n)" ]; then sudo apt-get install -y $n ; fi  ; done


http="http://kernel.ubuntu.com/~kernel-ppa/mainline/"
folderversion=$(wget -q -O- $http | html2text  | grep DIR |  cut -d " " -f 2 | grep -v rc | tail -n 1)
LinkLastVersion=${http}${folderversion}
LastKernelAvaliable=$(echo $folderversion | cut -d "-" -f1 | tr -d v )
#if is a first major revision (es.: 3.10) add ".0" (es.: 3.10.0)
if [ -z $(echo $LastKernelAvaliable | cut -d "." -f3) ]  ; then LastKernelAvaliable=${LastKernelAvaliable}".0"; fi 

LastKernelInstalled=$(ls /boot/ | grep img | cut -d "-" -f2 | sort -V  | tail -n 1)

### installed kernel
YourKernels=$(virg="" ; for n in $(ls /boot/ | grep img | cut -d "-" -f2 | sort -V)  ; do echo -e $virg $n ; virg="|" ; done)

PenultimateVersion=$(ls /boot/ | grep img | cut -d "-" -f2,3 | sort -V | tail -n2 | head -n1)

nkernel=$(ls /boot/ | grep img | cut -d "-" -f2,3 | sort -V | wc -l)
if ! [ "$nkernel" = 1  ]
then
Penultimate="Remove penultimate kernel $PenultimateVersion"
fi



echo -e "\n\n\t Yours installed kernels:   " $YourKernels  "\n\t Kernel Avaliable: " $LastKernelAvaliable  "\n\n"

if [ $LastKernelInstalled = $LastKernelAvaliable ]
   then echo -e  "\n\n\t Your kernel is updated!\n\n"
   Update="Remove Last kernel $LastKernelAvaliable"
   UpdateRemove="remove"
   else #echo -e "\n\n\t Your last Kernel is:   " $LastKernelInstalled  "\n\t Kernel Avaliable: " $LastKernelAvaliable  "\n\n"
   Update="Update to $LastKernelAvaliable"
   UpdateRemove="update"
fi

echo "Select option"
PS3="
Pick an option: "
options=("$Update" "$Penultimate")  #  "Quit"

select opt in "${options[@]}" "Quit"; do

    case "$REPLY" in

    1 )

###########################
   case $UpdateRemove in

       "update")

   echo -e "\n\t[Update to the kernel $LastKernelInstalled]\n"

      #arch
      arch=`uname -m`
      if  [ $arch = i686 ] || [ $arch = i386 ]; then myarch="i386"; elif [ $arch = "x86_64" ]; then myarch="amd64"; else echo "Unsupported Architecture"; fi

      #### list links to download
      listdebs=$( wget -q -O- $LinkLastVersion  | html2text  -width 200   | tr [:blank:]  + | cut -d "+" -f 5  | egrep 'all.deb|'$myarch'.deb')
      linkdebs=$(for deb in $listdebs; do echo $LinkLastVersion$deb; done)

      #### download, install and remove folder download
      DownloadFolder=/tmp/kernel_$LastKernelAvaliable  ; mkdir -p $DownloadFolder ; cd $DownloadFolder
      wget $( echo "$linkdebs" )
      sudo dpkg -i *.deb
   #   sudo rm -rf $DownloadFolder
   
   ;;
       "remove")
   echo -e "\n\t[Remove the Last kernel $LastKernelInstalled]\n"

      sudo apt-get remove --purge $LastKernelInstalled
   break
   esac
##################################



;;   2 ) echo -e "\n\t[Remove the Penultimate kernel $PenultimateVersion]\n"

   sudo apt-get remove --purge $PenultimateVersion
   break

;;

    $(( ${#options[@]}+1 )) ) echo "Goodbye!"; break;;
    *) echo "Invalid option. Try another one.";continue;;

    esac

done

paulosubs
 
Mensagens: 7
Registrado em: 17 Julho, 2013

Próximo

Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 32 visitantes