Stdout'a yazabiliyor ancak bir dosyaya yazamıyor


0

Ziyaret ettiğim URL'nin izini sürmek istiyorum, bu yüzden şöyle bir komut satırı kullanıyorum:

tcpdump -ien1 -v -X 'tcp bağlantı noktası 80' | sed -nl   Var / ^. 0 x [0-9A-f] {4}:. {43} (. ) $ / \ 1 / p '| perl break.pl | perl -pe   'S / (GET | POST) (.. ?.), HTTP / 1 .... Sunucu. ([A-z-Z._0-9-] ) ../ "\ nBEGURL   ".localtime ().": $ 1 http: // 3 $ 2 $ \ n "/ ge '| grep" ^ BEGURL "

İyi çalışıyor, her satıra bir URL. Ama yaparsam

tcpdump -ien1 -v -X 'tcp bağlantı noktası 80' | sed -nl   Var / ^. 0 x [0-9A-f] {4}:. {43} (. ) $ / \ 1 / p '| perl break.pl | perl -pe   'S / (GET | POST) (.. ?.), HTTP / 1 .... Sunucu. ([A-z-Z._0-9-] ) ../ "\ nBEGURL   ".localtime ().": $ 1 http: // 3 $ 2 $ \ n "/ ge '| grep" ^ BEGURL " Ve formülünde; / Tmp / çıkış

(& gt; & gt; / tmp / out sonuna dikkat edin) Sonra dosya boştur! Neden biliyor musun? Bu benim için tamamen mantıksız.

Ayrıca stdout ve stderr komutunu / tmp / out dizinine yönlendirmeyi denedim, hala boş. Dosya yazma erişimine sahip. Ne olabileceği hakkında hiçbir fikrim yok. Stdout ve stderr'den başka bir şey var mı?

Herhangi bir yardım için.

Yanıtlar:


0

Bunu, "stdout ve stderr komutunu / tmp / out dizinine yönlendirmeyi de denedim" - derken, bunun en muhtemel sorun gibi göründüğünü söyleyebilirsiniz;

Öyleyse hata ayıklamaya yardımcı olmak için ilk komutunuza 2 & gt; / dev / null komutunu ekleyin ve çıktı alıp almadığınızı görün.

Ayrıca, test komutunu basitleştirebilir misiniz? Örneğin, bu çalışır:

tcpdump -ien1 -v -X 'tcp port 80' >> /tmp/out

0

Birkaç gün önce de aynı sorunu yaşadım. Kullanmayı deneyin -w Paketleri bir dosyaya yazmak için Daha fazla bilgi için, bkz man tcpdump.

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.