O unitil é uma boa idéia tinha acabado de chegar nesse ponto já que com o if o comando só executa uma vez, não estou usando o zenity porque este script é executado somente em modo texto com acesso via ssh. Sendo assim não posso usar uma interface grafica pro dialog.
2009/8/5 Julio C. Neves <[email protected]> > > > Fala Leonardo, > normalmente qdo se testa o $?, o código está mal escrito. Explico pq: os > cmds if, while e until testam se uma instrução foi bem sucedida ou não. > Desta forma use um desses cmds para testar se o dialog foi bem sucedido. Eu > faria algo assim: > > until VAR1=$(dialog --backtitle "Caixa Economica Federal" --title "coleta > de > logso Multicanal" --no-cancel --stdout --menu "\nSelecione o tipo de Log > que > > deseja capturar:" 18 65 2 1 "Log completo" 2 "Log por data") > do > # neste ponto vc deve colocar um dialogo de erro. > done > > Isto é, se o cara der esc, aparecerá o dialogo de erro e em seguida voltara > a pedir o tipo de log. Se vc não quiser colocar um diálogo de erro, use o > cmd dois-pontos (:) para não fazer nada. > > Uma pergunta: pq vc não usa o zenity ou o kdialog? Experimente em zenity: > > until VAR1=$(zenity --list --title "coleta de logso Multicanal" \ > --text "Selecione o tipo de Log que deseja capturar:" \ > --radiolist --column marque --column Para \ > true "Log Completo" \ > false "Log por Data") \ > do > zenity --error --text "Voce deverá marcar uma das opções" > done > -- > Abraços, > Julio > Cursos de Shell e Zenity? > - Em SP ligue (11) 2125-4747; > - Em DF ligue (61) 3223-3000; > - No RJ ligue (21) 2561-0867; > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > 2009/8/4 Leonardo Bites <[email protected]<leonardo.bites%40gmail.com> > > > > > > > > > > Galera estou apanhando pra impedir que a tecla esc feche o meu script já > > tentei como podem ver no codigo tratar o $? =255 mas não funcionou. > Alguém > > sabe como faço pra desativar essa tecla no dialog. > > Segue o meu script > > > > #!/bin/bash > > # Autores: Leonardo Bites e Tiago Mingone > > # Script de Automacao do processo de captura de Logs do multicanal > > # Data: 06/02/2009 > > # > > #Modificacoes > > # > > #Vers‹o 1 - AtualizaŤ‹o para pegar Logs via Rede (SSH) > > #Vers‹o 2 - CorreŤ‹o na funŤ‹o Salva Log para funcionar com as Vers›es > Etch > > e Sarge do Debian e na FunŤ‹o DataLog para corrigir o problema de > > duplicidades na captura > > #Vers‹o 3 - SeparaŤ‹o da captura do Banco de dados e o log da AplicaŤ‹o e > > modificacao da nomeclatura dos arquivos para o padrao indicado pela > > REDEASP. > > #Vers‹o 4 - AlteraŤ‹o para maquinas 4534 e resoluŤ‹o de bug na coleta do > > prolog > > #Vers‹o 5 - Adiciona Informacoes do equipamento > > #Vers‹o 6 - Modifica dados do equipamento > > #Vers‹o 7 - Trava saida para prompt (saida somente com senha), finaliza e > > derruba sessao > > > > export SHELL=/bin/bash > > arq_informacoes="/home/suporte/informacoes.txt" > > > > #DeclaraŤ‹o de FunŤ›es > > > > function SelecionaLog() { > > SELECIONALOG=$(dialog --backtitle "Caixa Economica Federal" \ > > --title "coleta de logs Multicanal" \ > > --stdout \ > > --nocancel \ > > --menu "\nSelecione a opcao:" 18 65 9 \ > > 1 "Coleta logs do SIMMA (Extracash.log)" \ > > 2 "Coleta Banco de dados da Aplicacao" \ > > 3 "Coleta logs dos drivers da Perto" \ > > 4 "Coleta logs dos driver Procomp" \ > > 5 "Coleta logs do sistema de atualizacao de pacotes"\ > > 6 "Informacoes do equipamento"\ > > 7 "Alterar dados do equipamento"\ > > 8 "Sair para prompt de comando"\ > > 9 "Finalizar coleta de log") > > } > > > > function TipoLog() { > > TIPO=$(dialog --backtitle "Caixa Economica Federal" \ > > --title "coleta de logs Multicanal" \ > > --no-cancel \ > > --stdout \ > > --menu "\nSelecione o tipo de Log que deseja capturar:" 18 65 2 \ > > 1 "Log completo" \ > > 2 "Log por data") > > } > > > > function TestaTipo(){ > > if [ "$TIPO" == "1" ]; then > > DiretorioLog > > else > > DataLog > > fi > > } > > > > function DataLog() { > > #export LANG=pt_br > > DATA=$(ls -l -q ${DIRETORIO}${ARQUIVOS} --sort=time |grep -v ^d |awk > > '{print $6}'|uniq) > > echo $DATA|tr " " "\12" > /home/suporte/DATA > > whiptail --title \ > > "Selecione as datas para coleta de LOG" \ > > --checklist "\nDatas disponiveis:" 0 60 $(cat /home/suporte/DATA|wc -l) > > $(cat /home/suporte/DATA|while read d; do echo "$d" "." "off"; done) > > 2>/home/suporte/data ; > > DATA_SEL=$(cat /home/suporte/data) > > rm /home/suporte/data > > echo ${DATA_SEL//\"} >/home/suporte/data > > > > } > > > > function DiretorioLog() { > > case ${SELECIONALOG} in > > 1) > > DIRETORIO=/opt/foton/log/ > > ARQUIVOS="*" > > ;; > > 2) > > DIRETORIO=/opt/foton/db/ > > ARQUIVOS="*" > > ;; > > 3) > > DIRETORIO=/opt/perto/log/ > > ARQUIVOS="*" > > ;; > > 4) > > DIRETORIO=/opt/DieboldProcomp/JXFS/DieboldProcompJXFS/Logs/ > > ARQUIVOS="*" > > MODELO=$(cat /root/modelo_procomp) > > if [ '${MODELO}' = '5' ]; then > > AMI=/opt/DieboldProcomp/AMI/AMITrace* > > fi > > if [ -e "/tmp/prolog.log" ]; then > > TMP="/tmp/prolog.log" > > else > > TMP="/tmp/prolog/prolog*" > > fi > > > > if [ -e "/tmp/prolog/" ]; then > > > > TMP=${TMP} > > > > else > > > > if [ -e "/var/prolog.log" ]; then > > TMP="/var/prolog.log" > > else > > TMP="/var/prolog/prolog*" > > fi > > fi > > ;; > > 5) > > DIRETORIO=/var/log/ > > ARQUIVOS="*_atm.log" > > ;; > > > > *) > > ;; > > esac > > > > } > > > > function SalvaLog() { > > > > TTY=$(tty |cut -d "/" -f 3,4) > > > > IP=$(who |grep ${TTY} |awk '{print $6}' |tr -d "( )") > > > > if [ -z $IP ]; then > > IP=$(who |grep ${TTY} |awk '{print $5}' |tr -d "( )") > > fi > > > > USUARIO=$(dialog --stdout --inputbox "Entre com o nome do usuario da > > maquina de acesso " 0 0 ) > > > > clear > > tput cup 10 > > echo -e "\n Aguarde solicitacao da senha " > > > > scp /home/suporte/${NOMELOG}_`date +%d%m%y`.tar.gz > > ${usuar...@${ip}:/home/${USUARIO} > > && dialog --stdout --msgbox "Arquivo de Log enviado para a pasta > > /home/${USUARIO} da maquina ${IP}." 20 60 || dialog --stdout --msgbox > > "Arquivo de Log nao pode ser transferido verifique as permissoes da pasta > > /home/${USUARIO} da maquina ${IP}." 20 60 > > > > ApagaTudo > > SelecionaLog > > > > #PID=$(ps aux |grep $u...@$tty |head -n 1 |awk '{print $2}') > > #kill ${PID} > > > > } > > > > function NomeLog(){ > > > > eval NOMELOG=${LOG}"_"${NUM_TERMINAL} ; echo $NOMELOG > > > > } > > > > function CompactarLog() { > > > > if [ "$TIPO" = "1" ]; then > > > > if [ "${SELECIONALOG}" == "1" ]; then > > cd ${DIRETORIO} > > tar -cvzf /home/suporte/${NOMELOG}_`date +%d%m%y`.tar.gz ${DIRETORIO} > > ${TMP} > > ${AMI} ${arq_informacoes} > > else > > cd ${DIRETORIO} > > tar -cvzf /home/suporte/${NOMELOG}_`date +%d%m%y`.tar.gz > > ${DIRETORIO}${ARQUIVOS} ${TMP} ${AMI} ${arq_informacoes} > > > > fi > > else > > if [ "${SELECIONALOG}" == "1" ]; then > > for i in `cat /home/suporte/data`; do ls -l -N ${DIRETORIO}|awk '{print > $6" > > "$8}'|grep $i |cut -d " " -f2; done > /home/suporte/arquivo.logs > > cd ${DIRETORIO} > > tar -cvzf /home/suporte/${NOMELOG}_`date +%d%m%y`.tar.gz > > --files-from=/home/suporte/arquivo.logs ${TMP} ${AMI} ${arq_informacoes} > > rm /home/suporte/arquivo.logs > > else > > for i in `cat /home/suporte/data`; do ls -l -N > ${DIRETORIO}${ARQUIVOS}|awk > > '{print $6" "$8}'|grep $i |cut -d " " -f2; done > > > /home/suporte/arquivo.logs > > cd ${DIRETORIO} > > tar -cvzf /home/suporte/${NOMELOG}_`date +%d%m%y`.tar.gz > > --files-from=/home/suporte/arquivo.logs ${TMP} ${AMI} ${arq_informacoes} > > rm /home/suporte/arquivo.logs > > fi > > fi > > > > } > > > > function ApagaTudo(){ > > > > rm -f /home/suporte/data > > rm -f /home/suporte/DATA > > rm -f /home/suporte/arquivo.logs > > rm -f /home/suporte/*.tar.gz > > rm -f /home/suporte/consulta.sql > > rm -f /home/suporte/informacoes.txt > > > > } > > > > function SairPrompt(){ > > senha=$(dialog --stdout --title "Caixa Economica Federal" --insecure > > --passwordbox "entre com a senha: " 10 50) > > > > senha_md5=$(echo -n "${senha}" | md5sum |tr -d " ") > > > > if [ "${senha_md5}" = "0f359740bd1cda994f8b55330c86d845-" ]; then > > > > break > > sair="1" > > > > else > > > > dialog --title 'Senha Incoreta !' --msgbox 'A senha esta incoreta tente > > novamente.' 10 50 > > > > fi > > } > > > > #Excucao do programa > > echo "interacao" > > source Informacao_maquina.sh > > > > trap "" 2 > > > > SelecionaLog > > if [ "$?" != "0" ] && [ "$?" != "255" ];then > > > > sair="1" > > > > fi > > > > echo "select pmtval from pmt where pmtcod = '65';" > > >/home/suporte/consulta.sql > > > > export NUM_TERMINAL=$(/opt/firebird/bin/isql > > localhost/3050:/opt/foton/db/EXTRACASH.GDB -u sysdba -p caixa -s 1 > > -noautocommit -i consulta.sql | tail -2 | head -1 | cut -f1 -d" ") > > > > while [ "${sair}" != "1" ];do > > case ${SELECIONALOG} in > > > > 1) > > export LOG="extracash" > > DiretorioLog > > TipoLog > > TestaTipo > > NomeLog > > CompactarLog > > SalvaLog > > ;; > > 2) > > export LOG="firebird" > > DiretorioLog > > TIPO="1" > > TestaTipo > > NomeLog > > CompactarLog > > SalvaLog > > ;; > > 3) > > export LOG="perto" > > DiretorioLog > > TipoLog > > TestaTipo > > NomeLog > > CompactarLog > > SalvaLog > > ;; > > 4) > > export LOG="procomp" > > DiretorioLog > > TipoLog > > TestaTipo > > NomeLog > > CompactarLog > > SalvaLog > > ;; > > 5) > > export LOG="atualizacao" > > DiretorioLog > > TipoLog > > TestaTipo > > NomeLog > > CompactarLog > > SalvaLog > > ;; > > 6) > > whiptail --title "Informacoes do Equipamento" --msgbox "$(cat > > ${arq_informacoes})" 0 60 > > SelecionaLog > > ;; > > 7) > > ./AlteraDados.sh > > SelecionaLog > > ;; > > 8) > > SairPrompt > > SelecionaLog > > ;; > > > > 9) > > ApagaTudo > > kill -HUP `pgrep -s 0 -o` > > #sair="1" > > ;; > > > > *) > > ;; > > esac > > done > > > > -- > > -- > > Leonardo Bites > > > > Linux Registered user #449087 > > ___________________________ > > > > "Open Source for Open Minds" > > > > "Pensamentos tornam-se ações, > > > > ações tornam-se hábitos, > > > > hábitos tornam-se caráter, > > > > e nosso caráter torna-se nosso destino". > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- -- Leonardo Bites Linux Registered user #449087 ___________________________ "Open Source for Open Minds" "Pensamentos tornam-se ações, ações tornam-se hábitos, hábitos tornam-se caráter, e nosso caráter torna-se nosso destino". [As partes desta mensagem que não continham texto foram removidas]
