wget para imprimir erros, mas nada em contrário

20

Como posso ter erros de impressão do wget, mas nada de outra forma?

No comportamento padrão, mostra uma barra de progresso e muitas coisas.

Na versão --no-verbose ainda imprime uma linha por arquivo baixado, isso eu não quero.

A opção --quiet faz com que seja totalmente silenciosa, mesmo em caso de erro, não imprime nada.

Existe um modo no qual ele imprime erros, mas nada mais?

    
por pupeno 02.10.2009 / 20:58

6 respostas

13

Há respostas muito boas nesta questão, não deixe de verificá-las, mas o que fiz foi:

wget [wget options] 2>&1 | grep -i "failed\|error"
    
por 29.09.2010 / 09:47
14

Use o curl, não adianta adivinhar como cada erro será exibido.

[wizard@laptop ~] curl -s -S http://www.google.coccm/ > /dev/null && echo "TRUE"
curl: (6) Couldn't resolve host 'www.google.coccm'
[wizard@laptop ~]$ curl -s -S http://www.google.com/ > /dev/null && echo "TRUE"
TRUE

-s/--silent

Silent mode. Don’t show progress meter or error messages. Makes Curl mute.

-S/--show-error

When used with -s it makes curl show error message if it fails.

E se você precisar de stderr no stdout por algum motivo.

curl -s -S http://www.google.coccm/  2>&1 1> /dev/null
    
por 22.02.2011 / 20:03
4

Eu não vejo uma opção para isso. Você precisa saber qual é o erro ou apenas se aconteceu? Se acontecer de você só precisar saber se houve erro, você pode usar o status de saída.

if ! wget -o /dev/null www.google.com/flasfsdfsdf; then
    echo 'Oops!'
fi

Ou talvez:

if ! wget -o logfile www.google.com/flasfsdfsdf; then
    cat logfile
fi

E você pode mudar o gato para um comando grep se você quiser ter uma fantasia ...

    
por 02.10.2009 / 21:36
2

Redirecione a saída padrão para /dev/null , mas mantenha a saída de erro em sua opção de shell.

No bash isso seria:

wget [wget options] > /dev/null

Editar: Então, wget se comporta mal. Se todos os erros contiverem a palavra "erro", você poderá canalizar para grep

wget [wget options] 2>&1 | grep -i "error"
    
por 02.10.2009 / 21:12
1
OUT='wget --no-verbose -O /tmp/a http://example.com/ 2>&1' || echo $OUT

funciona. Mas sempre trunca o arquivo de saída, que você pode ou não querer.

Curl é melhor:

curl --fail --silent --show-error -o /tmp/a http://example.com

Em caso de erro, não modifica o arquivo de saída.

    
por 11.06.2017 / 16:08
0

Como wget produz todas as mensagens em stderr , você precisa usar o redirecionamento antes de canalizá-lo para o grep:

wget [options] 2>&1 | grep "^wget:"

Isso pressupõe que wget comece suas linhas de erro com "wget:".

    
por 02.10.2009 / 21:34

Tags