hataları yazdırmak wget, ancak başka hiçbir şey


27

Wget yazdırma hatalarını nasıl alabilirim, fakat başka bir şey yapamaz mıyım?

Varsayılan davranışta, bir ilerleme çubuğu ve çok fazla şey gösterir.

--No-verbose sürümünde hala indirilen dosya başına bir satır yazdırılıyor, bu istemiyorum.

--Quiet seçeneği tamamen sessiz olmasına neden olur, hatta bir hata durumunda bile hiçbir şey basmaz.

Hataları yazdırdığı bir mod var mı, başka bir şey yok mu?

Yanıtlar:


17

Bu soruda çok iyi cevaplar var, onları kontrol ettiğinizden emin olun, ancak yaptığım şudur:

wget [wget options] 2>&1 | grep -i "failed\|error"

16.04 ubuntu bash ile benim için çalışan tek cevap buydu.
Ligemer

17

Kıvrılmayı kullanın, her hatanın nasıl görüneceğini tahmin etmenin bir anlamı yoktur.

[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 / - Sessiz

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

-S / - göster-hata

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

Ve nedense stdout'ta stderr'e ihtiyacınız varsa.

curl -s -S http://www.google.coccm/  2>&1 1> /dev/null

1
Ne yazık ki bu, tipik HTTP hatalarını (örn., 404 hataları bu şekilde bastırılır) işlemez, hackget wget yöntemi de bunu yapar.
işlem91,

Aşağı oy: Öneriniz makul olsa da, soruyu yanıtlamıyor.
Stephan Richter

-F / - ekle, sunucu bir hata kodu döndürürse bir hata mesajı görüntüleyemiyor (örn. 404)
Hontvári Levente 11:17

Eğer soru kıvrılma ile ilgiliyse veya kıvrılma özelliği wget ile eşitlik gösteriyorsa bu harika bir cevap olabilir. Ne yazık ki ikisi de böyle değil ...
dfc

4

Bunun için bir seçenek görmüyorum. Hatanın ne olduğunu bilmeniz mi gerekiyor, yoksa sadece oldu mu? Sadece bir hata olup olmadığını bilmeniz gerekiyorsa, çıkış durumunu kullanabilirsiniz.

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

Ya da belki:

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

Ve fantezi almak istersen, kediyi grep komutuna çevirebilirsin ...


3
Daha basit yol: wget -o logfile <url> || kedi logfile
kolypto

Hata mesajını görüntülemenin yanı sıra, muhtemelen hatayla çıkmak veya farklı bir şey yapmak istediğinizden daha basit bir yol daha kötüdür.
Sam Watkins,

2

Standart çıktıyı yönlendir /dev/null, ancak hata çıktısını seçtiğiniz kabukta tutun.

Kısaca bu şöyle olurdu:

wget [wget options] > /dev/null

Düzenleme: Yani wgetyaramazlık. Tüm hatalar "hata" kelimesini içeriyorsa, içine yöneltilebilir.grep

wget [wget options] 2>&1 | grep -i "error"

wget her şeyi stderr'e göndermiş gibi görünüyor.
pupeno

grepSadece çıktı hatalarını kullanarak başka bir seçenek daha ekledim
Ben S

stderryardım olmadan borudan geçmiyor.
sonraki duyuruya kadar duraklatıldı.

1
Sonunda wget kullandım [wget options] 2> & 1 | grep -i "başarısız \ | hata"
pupeno

1

Yana wgettüm mesajları üzerinde çıkışları stderr, size boru can bu grep önce yönlendirmeyi kullanmak zorunda:

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

Bu wgethata satırlarına "wget:" ile başladığını varsayar .


1
OUT=`wget --no-verbose -O /tmp/a http://example.com/ 2>&1` || echo $OUT

Eserleri. Ancak, her zaman isteyebileceğiniz veya istemeyeceğiniz çıktı dosyasını keser.

Kıvırmak daha iyidir:

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

Bir hata durumunda çıktı dosyasını değiştirmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.