नेथोग और नेटपरफ से ग्रीप मान


0

मुझे एक प्रक्रिया की नेटवर्क गतिविधियों और कनेक्शन की बैंडविड्थ की निगरानी करने की आवश्यकता है। इसलिए मैं का उपयोग करने का फैसला किया nethogऔर netperfके साथ गठबंधन grepऔर awkएक फाइल करने के लिए मूल्यों को लिखने के लिए।

nethogकमांड: nethogs -t eth0 | grep firefox | awk '{ print $3 }'(मैं अपलोड / डाउनलोड स्पीड लेना चाहता हूं)। पहली समस्या यह है कि कमांड कुछ भी प्रिंट नहीं करता है।

अधिक विस्तार: कमांड: nethogs -t eth0 | grep firefoxआउटपुट:

usr/lib/firefox/firefox-bi�)/4956/1000  0.338867    0.239063
/usr/lib/firefox/firefox-bi�)/4956/1000 0.543555    0.274219
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531    0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531    0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.749023    0.589844
/usr/lib/firefox/firefox-bi�)/4956/1000 1.30098 3.47617
/usr/lib/firefox/firefox-bi�)/4956/1000 1.90449 8.0127
/usr/lib/firefox/firefox-bi�)/4956/1000 5.31641 25.0033
/usr/lib/firefox/firefox-bi�)/4956/1000 8.60762 42.0176

मैं नीचे दाईं ओर दो मान चाहता हूं। लेकिन जैसा कि आप आउटपुट को लगातार (स्पेस) नहीं देख सकते हैं, जोड़ें | awk '{print $3}' most of the time return nothing। और मैं इसे ठीक नहीं कर सकता।

netperfकमांड: netperf -H 192.168.1.10और आउटपुट है:

Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

524288 524288 262144    10.00    **718.62**

मैं नीचे दाईं ओर मूल्य मुद्रित करना चाहता हूं, लेकिन पता नहीं कैसे करना है। कि 2 समस्या => महासंघ द्वारा हल किया गया है!

क्या आप लोग मेरी सहायता कर सकते हैं? सभी विचार देने वालों का पहले से आभार!


और आपके द्वारा दिए गए उत्तर की जाँच करने के बारे में क्या?
फेडोरक्वि

आपका समाधान काम करता है, लेकिन पहले वाला अभी भी बचा है ...
Tiana987642

क्या आपको nethogsअकेले कोई आउटपुट मिलता है ? और nethogs -t eth0?
फेडोरक्वि

हां हां मैं करता हूँ। लेकिन यह सुसंगत नहीं है (स्तंभों के बीच का स्थान) इसलिए मुझे लगता है कि इसका कारण ... मुझे नहीं पता कि इसे कैसे ठीक किया जाए :(
Tiana987642

1
आपको grep + awk की कभी आवश्यकता नहीं है क्योंकि awk कुछ भी कर सकता है जो grep कर सकता है। आपको कुछ नमूना आउटपुट दिखाने की आवश्यकता है nethogs -t eth0यदि आप एक स्क्रिप्ट चाहते हैं जो उस आउटपुट को पार्स कर सकती है क्योंकि यह इनपुट के वांछित आउटपुट के साथ इनपुट है जिसे आप लिखना चाहते हैं।

जवाबों:


1

के लिए 2 समस्या है, तो आप कर सकते हैं:

your_command | tail -1 | awk '{print $NF}'

यह दिए गए इनपुट की अंतिम पंक्ति के अंतिम क्षेत्र को प्रिंट करेगा।


चूंकि एड मॉर्टन मुझे पहली समस्या में मदद करते हैं, इसलिए मैं इन चीजों पर अंत में हूँ! मेरी मदद करने के लिए धन्यवाद :)
Tiana987642

2

आइए इसकी शुरुआत करें:

nethogs -t eth0 | awk '/firefox/{ print $3 }'

netperf -H 192.168.1.10 | awk 'END{ print $NF }'

यदि वे काम नहीं करते हैं, तो awk स्क्रिप्ट, अपेक्षित आउटपुट और स्पष्टीकरण के लिए नमूना इनपुट प्रदान करें।

आपको आवश्यकता होगी:

netperf -H 192.168.1.10 | awk '{v=$NF} END{ print v }'

POSIX द्वारा फ़ील्ड को अंत अनुभाग में बनाए रखने के लिए आवश्यक नहीं होने के बाद से कुछ होश में हैं।


धन्यवाद ! nethogsकमांड काम करता है! लेकिन netperf वापसी found? BTW, क्या आप कृपया मेरे कमांड उपयोग की व्याख्या कर सकते हैं grepऔर awkअधिकांश समय कुछ भी वापस नहीं करते हैं?
1719 में Tiana987642

fedorqui मुझे उपयोग करने का सुझाव देता है netperf -H 192.168.1.10 | tail -1 | awk '{print $NF}' और मुझे यह समाधान काम करता है!
Tiana987642

यदि netperf | awkकमांड प्रिंट करता है, foundतो आउटपुट foundकी अंतिम पंक्ति पर अंतिम फ़ील्ड है netperfजैसा आपने कहा था कि आप प्रिंट करना चाहते थे। ऐसा कहने के बाद, netperf | tail -1 | awkसमाधान बिल्कुल उसी चीज़ को प्रिंट करेगा , यदि आप 2 के बीच आउटपुट में अंतर देख रहे हैं, तो आप एक ही netperf कमांड नहीं चला रहे हैं या आपके पास इसमें आउटपुट में spurious नियंत्रण वर्ण हैं या कुछ और है जो आप उत्पन्न हुए हैं ' t हमें बता रहे हैं। अंत में - हाँ, इनपुट की अंतिम पंक्ति के अंतिम क्षेत्र को प्रिंट करने के कई तरीके हैं और आप जितने चाहें उतने टूल और पाइप लगा सकते हैं।

नमस्ते, हो सकता है कि आपने मेरे प्रश्न को बहुत तेज़ी से पढ़ा हो :) मुझे netperfनीचे दाईं ओर संख्या वापस चाहिए (मेरे प्रश्न में दूसरी समस्या देखें)। तो आउटपुट 718.62नहीं होना चाहिए found
Tiana987642

1
नहीं, मैंने आपका प्रश्न बहुत तेजी से नहीं पढ़ा। awk में तीखे शब्द नहीं बनते और उन्हें छापते हैं। Awk कमांड शब्द को प्रिंट कर रहा है foundक्योंकि जाहिरा तौर पर यह शब्द foundआपके netperfआउटपुट के नीचे दाईं ओर टेक्स्ट है , न 718.62कि जैसा आपको लगता है कि यह होना चाहिए। अब तक आपने हमें अपनी nethogकमांड से कोई आउटपुट नहीं दिखाया है, इसलिए यह अनुमान लगाना असंभव है कि आपको इसे पार्स करने में क्या समस्या हो सकती है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.