[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: script DD



Quoted by a box full of trained worms
For `ADRIANO BRAND <abrand@brturbo.com>' 
On Thursday, 26 June 2003 (12:58):

>
>  fiz um pequeno script com o dialog, para gerar disketes 
> a partit de uma imagem usando o DD.
>  O Problema é que dando certo ou não, ele retorna que o disco
> foi gerado com sucesso.
>  como eu faço para retornar uma mensagem de erro se o 
> disco não funcionar?
> 

	Qual método está usando para verificar se o dd obteve sucesso ou não?
Verificando a variável ``$?'' logo após sua execução? Bem, se não estou
enganado, o dd sempre vai retornar 0 (sem erros), mesmo se não conseguiu copiar
tudo. Você pode, entretanto, fazer algo do tipo:

	dd if=arquivo.img of=/dev/fd0 2> /dev/stdout | grep "failed" -v

	Eu não me lembro o que o dd joga no terminal quando há alguma falha, você teria
que experimentar isso e trocar o "failed" pelo que for mais apropriado.

	Como o grep foi o último comando a ser executado, a variável ``$?'' será
atribuída a seu nível de erro. Portanto, se essa variável valer 1, é que houve
algum erro durante a geração do arquivo, e 0, se tudo ocorreu com sucesso.

	Sobre a linha de comando, se você (ou algum outro leitor desta lista) não
souber o significado do ``2>'': isso significa que você estará redirecionando o
arquivo de número dois (saida padrão para erros, ou stderr) para algum outro
lugar, no caso, o stdout (ou saída padrão de texto).

	Isso é feito pois não é possível fazer um pipe ("|") direto que consiga ler do
stderr -- é proposital e muito útil; você pode estar usando um programa que
processa algum dado e o jogue no stdout (e este você joga num arquivo em disco),
e os erros ou avisos, que não seriam importantes neste arquivo, são enviados
apenas para o seu terminal.

	No seu caso, como temos que analisar os erros com o ``grep'', redirecionamos o
stderr para stdout.


	Espero ter ajudado!


	Ah, só uma sugestão: não mude a caixa de nome de comandos, isto é, não troque
minúsculas por maiúsculas, pois, como você sabe, *nix é SenSíVeL à VaRiaÇõEs dE
CaiXA, e isso pode causar alguma confusão. Se quiser realçar alguma coisa,
coloque-a entre aspas.

-- 

 Leandro Pereira              (oO)           <leandro@linuxmag.com.br>
                              /||\                  www.mindcrisis.tk

     "Alguns homens vêem as coisas como são, e dizem 'Por quê?'
    Eu sonho com as coisas que nunca foram e digo 'Por que não?'"
                        --George Bernard Shaw



Reply to: