Menubox do Xdialog [RESOLVIDO]

1. Menubox do Xdialog [RESOLVIDO]

Marcos William Ferretti
ferretti

(usa Debian)

Enviado em 18/08/2009 - 14:09h

Boa tarde a todos.. Gostaria de uma ajudinha em um script shell que fiz. O menu box esta abrindo normalmente, mas ele nao executa as funcoes que eu determinei, apenas fecha qdo escolho uma opcao. Alguem pode me ajudar mostrando onde eu errei? As funcoes funcionam normalmente quando executadas separadamente, o unico problema esta na primeira funcao "Menu". A janela com as opcoes abrem normalmente, porem ao escolher uma funcao ela simplemente fexa, e nao executa nda. Segue abaixo meu script.

___________________________________________________________________________________
#!/bin/bash
#Sistema de Recovery Unimed Jundiaí - (Developed by Marcos W Ferretti - TI Unimed)

Menu () {
op=` Xdialog --stdout --title "Sistema de Recovery Unimed Jundiaí" --menubox "O que deseja fazer Ferretti?" 0 0 10 "1" "Transferir Imagem Nova" "2" "Carregar OS e acessar Discos" "3" "Reiniciar Computador" `
if [ "$op" = "1" ]; then
Transferir
elif [ "$op" = "2" ]; then
Sair
elif [ "$op" = "3" ];then
Reiniciar
fi
}

Transferir() {
#Faz bkp da tabela de particoes e mbr atuais
cd /home/bkptempmbr
dd of=mbr.img if=/dev/sda bs=512 count=1
sfdisk -d /dev/sda > sda.sf
cd /

#Cria tabela de particoes
cd /home/bkpmbr/
dd if=/dev/zero of=/dev/sda bs=512 count=1
dd of=/dev/sda if=mbr.img
sfdisk --force /dev/sda < sda.sf
cd /


# Transferi o Sistema
partimage -b restore /dev/sda1 /home/bkpprogramas/autoprog.partimg.gz.000
clear
partimage -b restore /dev/sda2 /home/bkpuser/autouser.partimg.gz.000
clear
partimage -b restore /dev/sda3 /home/bkpimg/autowin.partimg.gz.000
clear
partimage -b restore /dev/sda6 /home/bkprecovery/recov6.partimg.gz.000
clear
partimage -b restore /dev/sda7 /home/bkprecovery/recov7.partimg.gz.000
clear

#Restaura sistema de inicializacao
mkswap /dev/sda5
swapon /dev/sda5

grub --batch <<EOF
root (hd0,6)
setup (hd0)
quit
EOF
clear


#Guarda bkp da tabela de partições
ntfs-3g /dev/sda1 /mnt/temp
mkdir /mnt/temp/bkpmbr
cp -R -f -p /home/bkptempmbr/* /mnt/temp/bkpmbr
rm /home/bkptempmbr/*

#Restaura boot Windows
cp -R -f -p /home/bkpboot/* /mnt/temp
umount /mnt/temp
clear


echo '---------------------------------------'
echo '- Imagem Transferida com Sucesso! -'
echo '- Aguarde o Computador ser Reiniciado.-'
echo '- Tenha um bom dia. -'
echo '- Marcos Ferretti - TI Unimed -'
echo '---------------------------------------'

Menu
}

Sair() {
exit
}

Reiniciar() {
shutdown -r now
}
Menu
__________________________________________________________________________

Agradeço desde ja...


  


2. Re: Menubox do Xdialog [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 18/08/2009 - 14:20h

As funções devem ser declaradas antes de suas respectivas chamadas.


3. ex

Marcos William Ferretti
ferretti

(usa Debian)

Enviado em 18/08/2009 - 14:27h

Me da um exemplo por favor.. hehe... sou iniciante nisso..
obrigado


4. Re: Menubox do Xdialog [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 18/08/2009 - 14:31h

O /bin/laden está corretíssimo. Vamos pensar... o shell script executa linha por linha, certo? Portanto, como ele vai saber q função é Tranferir por exemplo se não lhe foi apresentada anteriormente? Então o seu script deveria ficar assim:

-----------------------------------------------------------------------------------------------------------

#!/bin/bash
#Sistema de Recovery Unimed Jundiaí - (Developed by Marcos W Ferretti - TI Unimed)

Transferir() {
#Faz bkp da tabela de particoes e mbr atuais
cd /home/bkptempmbr
dd of=mbr.img if=/dev/sda bs=512 count=1
sfdisk -d /dev/sda > sda.sf
cd /

#Cria tabela de particoes
cd /home/bkpmbr/
dd if=/dev/zero of=/dev/sda bs=512 count=1
dd of=/dev/sda if=mbr.img
sfdisk --force /dev/sda < sda.sf
cd /


# Transferi o Sistema
partimage -b restore /dev/sda1 /home/bkpprogramas/autoprog.partimg.gz.000
clear
partimage -b restore /dev/sda2 /home/bkpuser/autouser.partimg.gz.000
clear
partimage -b restore /dev/sda3 /home/bkpimg/autowin.partimg.gz.000
clear
partimage -b restore /dev/sda6 /home/bkprecovery/recov6.partimg.gz.000
clear
partimage -b restore /dev/sda7 /home/bkprecovery/recov7.partimg.gz.000
clear

#Restaura sistema de inicializacao
mkswap /dev/sda5
swapon /dev/sda5

grub --batch <<EOF
root (hd0,6)
setup (hd0)
quit
EOF
clear


#Guarda bkp da tabela de partições
ntfs-3g /dev/sda1 /mnt/temp
mkdir /mnt/temp/bkpmbr
cp -R -f -p /home/bkptempmbr/* /mnt/temp/bkpmbr
rm /home/bkptempmbr/*

#Restaura boot Windows
cp -R -f -p /home/bkpboot/* /mnt/temp
umount /mnt/temp
clear


echo '---------------------------------------'
echo '- Imagem Transferida com Sucesso! -'
echo '- Aguarde o Computador ser Reiniciado.-'
echo '- Tenha um bom dia. -'
echo '- Marcos Ferretti - TI Unimed -'
echo '---------------------------------------'

Menu
}

Sair() {
exit
}

Reiniciar() {
shutdown -r now
}

Menu () {
op=` Xdialog --stdout --title "Sistema de Recovery Unimed Jundiaí" --menubox "O que deseja fazer Ferretti?" 0 0 10 "1" "Transferir Imagem Nova" "2" "Carregar OS e acessar Discos" "3" "Reiniciar Computador" `
if [ "$op" = "1" ]; then
Transferir
elif [ "$op" = "2" ]; then
Sair
elif [ "$op" = "3" ];then
Reiniciar
fi
}

Menu
---------------------------------------------------------------------------------------------------------


5. Re: Menubox do Xdialog [RESOLVIDO]

Marcos William Ferretti
ferretti

(usa Debian)

Enviado em 18/08/2009 - 14:42h

Nossa... Perfeita sua explicacao, entendi ...
Ja corrigi este erro. Mas tem alguma coisa errada ainda.. pois ainda nao ta funcionando..
Alguem pode me ajudar ainda??
vlww


6. Re: Menubox do Xdialog [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 18/08/2009 - 15:03h

Nessa linha da variável, tente assim:

op=$(Xdialog --stdout --title "Sistema de Recovery Unimed Jundiaí" --menubox "O que deseja fazer Ferretti?" 0 0 10 "1" "Transferir Imagem Nova" "2" "Carregar OS e acessar Discos" "3" "Reiniciar Computador")


7. Re: Menubox do Xdialog [RESOLVIDO]

Marcos William Ferretti
ferretti

(usa Debian)

Enviado em 18/08/2009 - 15:13h

nossa kra.. ele ta funcionando agora.. mas a unica coisa q nao ta dando certo e o "Reiniciar", o comando esta errado? Por q sera que nao reinicia o pc?
vlww


8. Re: Menubox do Xdialog [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 18/08/2009 - 15:28h

É pq vc deve carregá-lo como root. Vc deve tá executando como usuário comum. Coloque assim:

Reiniciar() {
sudo shutdown -r now
}

E autorize o usuário dentro do arquivo /etc/sudoers, dessa forma:

usuario localhost=/sbin/shutdown -r now


9. Re: Menubox do Xdialog [RESOLVIDO]

Marcos William Ferretti
ferretti

(usa Debian)

Enviado em 18/08/2009 - 17:07h

Blz... Valeu kra.. era isso msm...
Entaum concluindo.. o problema era eu o usuario nao o menubox.. hehe pra variar ne...
Valewww a todoss..






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts