Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: lueneberg em 11 de MAR?O de 2008, 14:43

Título: Script verifica partição (ajuda)
Enviado por: lueneberg em 11 de MAR?O de 2008, 14:43
como um amigo estava com problemas aqui no forum, com partições,, passei um script do resulinux que faz este conserto... mais como ele usou o live do ubuntu deu erro por causa do kdialog, tive a ideia de passar este otimo script nativo do resulinux para que possa ser usado no live do ubuntu,,, mais ao escolher a partição e depois o sistema de arquivo ele volta para a escolha da partição...ficando em um tipo de looping.... ainda não achei o que pode tar errado....

manualmente ele funciona....

codigo do script:

Código: [Selecionar]
#!/bin/bash
#baseado no script limpeza "Willdoidao" Forum Ubuntu com inspiração script do 777 do resulinux...
# Aviso importante
USUARIO=`id | cut -f2 -d"(" | cut -f1 -d")"`

if test "$USUARIO" != "root"; then
   echo -e "Para executar esta rotina use o sudo."
   exit 9999
fi
while : ; do

## escolha da partição

nome=$( gdialog --inputbox 'escolha da partição (desmontada):' 0 0  2>&1 )

# Mostra o menu na tela, com as ações disponíveis
    resposta=$(
      gdialog --stdout               \
             --title 'Partições'  \
             --menu 'Escolha seu tipo de S. de Arquivos:' \
            0 0 0                   \
            1 'ext2' \
            2 'ext3'  \
            3 'reiserfs'     \
            4 'fat'        \
            0 'Sair'                )

    # Ela apertou CANCELAR ou ESC, então vamos sair...
    [ $? -ne 0 ] && break

    # De acordo com a opção escolhida, dispara programas
    case "$resposta" in
         1) sudo fsck.ext2 -p -f /dev/$nome ;;
         2) sudo fsck.ext3 -p -f /dev/$nome ;;
         3) sudo fsck.reiserfs --fix-fixable -y /dev/$nome ;;
         4) sudo fsck.vfat -a -w /dev/$nome ;;
         0) break ;;
    esac

done

#Mensagem de Saida
echo 'Will'
Título: Re: Script verifica partição (ajuda)
Enviado por: brunei em 20 de MAR?O de 2008, 11:35
No meu fedora, esse escript sai normalmente quando escolho a partição e o tipo, mas não sai quando eu peço para sair ::). Se você olhar a condição em:

Código: [Selecionar]
[ $? -ne 0 ] && break
o script não vai sair quando o usuário selecionar a opção 0 (que é a opção para sair). Se o seu problema é ficar preso no laço quando escolhe o tipo e não quando escolhe sair, o problema pode ser uma interpretação diferente que o bash está fazendo (talvez em virtude da versão ou da distribuição) ou mesmo problema na saída do gdialog. Aliás, o programa fica preso no laço se eu pressionar ESC ou clicar no botão cancelar, por que os códigos corretos do gdialog não devem estar sendo tratados.
Título: Re: Script verifica partição (ajuda)
Enviado por: clcampos em 21 de MAR?O de 2008, 03:45
Gostaria de fazer algumas observações antes de deixar a rotina:


Espero ao menos que ajude o pessoal a desenvolver uma rotina melhor, com as devidas conferências, e como é shell script (e eu adoro) estou a disposição para ajudar.

Citar
#!/bin/bash
#baseado no script limpeza "Willdoidao" Forum Ubuntu com inspiração script do 777 do resulinux...
# Aviso importante
USUARIO=`id | cut -f2 -d"(" | cut -f1 -d")"`

if test "$USUARIO" != "root"; then
   echo -e "Para executar esta rotina use o sudo."
   exit 9999
fi
while : ; do

## escolha da partição

NOME=$( zenity --entry --title="Corrige Particao" --text="Escolha da Particao Desmontada (Tecle <CANCELA> para encerrar):" )

# Ela apertou CANCELAR ou ESC, então vamos sair...
[ $? -ne 0 ] && break

# Mostra o menu na tela, com as ações disponíveis
    RESP=$( zenity --list --title="Corrige Particao" --radiolist --text="Escolha seu tipo de S. de Arquivos:" --height=260\
                   --column="Item" --column="Tipo"\
                     FALSE "ext2"\
                     TRUE  "ext3"\
                     FALSE "reiserfs"\
                     FALSE "fat"\
                     FALSE "Sair" )

    # Ela apertou CANCELAR ou ESC, então vamos sair...
    [ $? -ne 0 ] && break

    # De acordo com a opção escolhida, dispara programas
    case $RESP in
             "ext2") sudo fsck.ext2 -p -f /dev/$NOME ;;
             "ext3") sudo fsck.ext3 -p -f /dev/$NOME ;;
         "reiserfs") sudo fsck.reiserfs --fix-fixable -y /dev/$NOME ;;
              "fat") sudo fsck.vfat -a -w /dev/$NOME ;;
             "Sair") break ;;
    esac

done

#Mensagem de Saida
zenity --info --title="Corrige Particao" --text="Rotina encerrada!"
Título: Re: Script verifica partição (ajuda)
Enviado por: lueneberg em 21 de MAR?O de 2008, 10:00
.clcampos, ficou perfeito.... testei com o live do 7.10, perfeito..... não tinha feito em zenity pois achava que ele não vinha instalado, acho que nas vs anteriores não vinha.... mais ficou otimo....

no script original tem uma rotina que faz uma verificação mais profundo na partição reiserfs, avisa ao user que não pode ser cancelada .... ( caso a primeira não resolva o problema )

mais ficou otimo mesmo,,, mesmo sendo um script simples,, a função dele é corrigir defeitos usando o live CD, assim como uso ele com o Resulinux que ja vem com esta rotina no menu.... agora fica mais facil aos que tem o live do ubuntu...   obrigadão;;;;;;