Autor Tópico: Ajuda com Shell Script + Saida de Erros  (Lida 5503 vezes)

Offline frank_w

  • Usuário Ubuntu
  • *
  • Mensagens: 46
    • Ver perfil
Ajuda com Shell Script + Saida de Erros
« Online: 29 de Junho de 2008, 21:47 »
Boa Noite,

Eu estou com um problema em meu programa, onde tento instalar programas por meio de cache local. Até ai tudo bem, o problema acontece quando eu direciono a saida de erros para um arquivo de log, para poder analizar depois. Exemplo:

Citar
apt-get install -y force-yes audacious audacious-plugins 2>> /tmp/log_de_erro.log | zenity --progress --text="Instalando player Audacious" --pulsate


ao final da instalação, quando o programa analisa o conteudo do possivel log, ele sempre encontra o mesmo erro: "dpkg-preconfigure: Impossivel reabrir stdin:". O estranho é que quando eu tiro a parte de redirecionar o erro ele nao da erro nenhum, ou pelo menos eu nao vejo erro nenhum, e o programa esta la no menu funcionando.

Ja tentei rodar o comando em terminal sem o zenity:
Citar
apt-get install -y force-yes audacious audacious-plugins 2>> /tmp/log_de_erro.log

E aparentemente ele instala normal e mostra "Now deferred place sei-lah oque...", porem quando digito:
Citar
cat /tmp/log_de_erro.log
ele mostra que teve problemas:
Citar
dpkg-preconfigure: Impossivel reabrir stdin:

Se alguem souber oque pode estar acontecendo, por favor post aqui. Ficarei Grato.

Offline brunei

  • Usuário Ubuntu
  • *
  • Mensagens: 97
    • Ver perfil
    • Ubuntu Brasil - Wiki
Re: Ajuda com Shell Script + Saida de Erros
« Resposta #1 Online: 01 de Julho de 2008, 16:51 »
Olá frank_w,

Estive olhando o fonte do dpkg-preconfigure, que é um script perl. Ao que eu vi ele suporta vários frontend's para receber as informações de entrada, e quando você roda via um script ele tenta abrir o STDIN para receber entradas via console, mas não consegue (talvezpor que no script ele esteja rodando em modo batch e não modo interativo, não posso afirmar ao certo). Não sei se você tentou executar o comando sem o redirecionamento da saída, mas acredito que mesmo que o dpkg-preconfigure não lhe faça nenhuma pergunta, ele tentará abrir um frontend.

Vou dar uma pesquisada quando eu estiver no Linux (estou no Window$ agora) e qualquer novidade eu te informo.

Até...
Bruno Ribeiro

Offline frank_w

  • Usuário Ubuntu
  • *
  • Mensagens: 46
    • Ver perfil
Re: Ajuda com Shell Script + Saida de Erros
« Resposta #2 Online: 01 de Julho de 2008, 23:57 »
Obrigado pela ajuda!

Pelo jeito vou ter que achar outra maneira de verificar se os pacotes foram instalados corretamente. Ou criar uma espécie de filtro que ignore a linha do "stdin" do arquivo de log.

a proposito voce saberia me dizer se há uma meneira de checar a instalação dos pacotes? Será que há como usar a lista de pacotes do apt?

Valeu

Offline brunei

  • Usuário Ubuntu
  • *
  • Mensagens: 97
    • Ver perfil
    • Ubuntu Brasil - Wiki
Re: Ajuda com Shell Script + Saida de Erros
« Resposta #3 Online: 02 de Julho de 2008, 09:53 »
Frank_w,

Você pode saber se um pacote está instalado através do comando:

Código: [Selecionar]
dpkg -s nome_do_pacote
Quando o pacote não existe, o comando acima não escreve nada na saída padrão (mas deixa uma mensagem de erro na saída padrão de erros). Sendo assim, você pode escrever um script contendo o seguinte fragmento de código

Código: [Selecionar]
ESTADO=`dpkg -s nome_do_pacote 2> /dev/null`
if [ ! -z "$ESTADO" ]; then
    echo "O pacote está instalado!"
fi

Nota: o redirecionamento 2> permite-nos desviar a saída padrão de erro para o dispositivo null.
Bruno Ribeiro

Offline frank_w

  • Usuário Ubuntu
  • *
  • Mensagens: 46
    • Ver perfil
Re: Ajuda com Shell Script + Saida de Erros
« Resposta #4 Online: 02 de Julho de 2008, 12:36 »
Muito Obrigado!

Acho que agora vou conseguir terminar o meu script. Se ficar bom eu disponibilizo aqui no forum.

Mais uma vez obrigado pela atenção.

Offline sprit

  • Usuário Ubuntu
  • *
  • Mensagens: 65
    • Ver perfil
Re: Ajuda com Shell Script + Saida de Erros
« Resposta #5 Online: 14 de Julho de 2008, 23:59 »
Tenha cuidado com as dependencias, alguns arquivos depende de outros antes de instala.