2008-12-08 8 views
10

लिनक्स पर, मैं कैसे (प्रोग्राम के रूप में) के बाद काउंटर एक प्रति इंटरफ़ेस आधार पर प्राप्त कर सकते हैं:लिनक्स: पुनः प्राप्त प्रति-इंटरफ़ेस भेजा/प्राप्त पैकेट काउंटर (ईथरनेट, आईपीवी 4, IPv6)

  • भेजा गया/प्राप्त ईथरनेट फ्रेम,
  • भेजे गए/प्राप्त आईपीवी 4 पैकेट,
  • भेजा/प्राप्त आईपीवी 6 पैकेट।
+0

शायद यह कहीं/proc में है, लेकिन एक त्वरित और गंदे के रूप में आप शायद इसे पार्स कर सकते हैं "ifconfig" –

+2

पॉल के आउटपुट से बाहर, यह केवल फ्रेम गणना के लिए काम करेगा क्योंकि ifconfig प्रति आईपी प्रोटोकॉल को पैकेट गिनती नहीं देता है। – xahtep

+0

xahtep सिर पर नाखून मारा: फ्रेम गिनती आसान है। मैं आईपीवी 4 और आईपीवी 6 पैकेट की भी गणना कर रहा हूं। –

उत्तर

6

आप iptables नियमों और पैकेट काउंटर, उदा का उपयोग कर ऐसा करने में सक्षम होना चाहिए होगा

# input and output must be accounted for separately 
# ipv4, eth0 
iptables -I INPUT -i eth0 
iptables -I OUTPUT -o eth0 
# ipv6, eth0 
ip6tables -I INPUT -i eth0 
ip6tables -I OUTPUT -o eth0 

और आँकड़े देखने के लिए, इनमें से उत्पादन को पार्स:

iptables -L -vxn 
ip6tables -L -vxn 

समय भी आप काउंटर रीसेट करना चाहते हैं के लिए -Z झंडा देखना चाहिए।

+0

में पूर्व-स्थापित होना चाहिए, जो वादा करता है। क्या आप इसका वर्णन करने वाली पुस्तक/वेबसाइट को विस्तृत और/या इंगित कर सकते हैं? साथ ही, क्या एक प्रदर्शन प्रभाव होगा यदि मैं इसे उत्पादन प्रणाली पर "हर समय" चालू करना चाहता हूं? –

+1

मैंने जवाब देने के लिए उत्तर अपडेट किया है, उम्मीद है कि इससे मदद मिलती है। इसके लिए कोई ध्यान देने योग्य प्रदर्शन नहीं होगा क्योंकि यह कुछ इन-मेमोरी काउंटर अपडेट करता है क्योंकि पैकेट प्रवाह करते हैं। – xahtep

+0

बढ़िया! यही मुझे चाहिए। धन्यवाद! –

0

Wireshark (एथेरियल होने के लिए उपयोग किया जाता है) इससे आपकी मदद कर सकता है।

Netstat मेरी दूसरी अनुमान

+0

धन्यवाद, लेकिन मैं इन काउंटरों को किसी भी अतिरिक्त सॉफ़्टवेयर को इंस्टॉल किए बिना "मानक" लिनक्स सिस्टम पर पुनर्प्राप्त करने का एक तरीका ढूंढ रहा हूं। –

+0

नेटस्टैट को अधिकांश * nixes – dsm

3

आप हमेशा विभिन्न कर्नेल स्थिति फ़ाइलों को पार्स कर सकते हैं, मुझे लगता है कि यह netstat जैसे टूल हैं।

आदमी पेज पता चलता है:

  • /proc/net/raw - रॉ सॉकेट जानकारी
  • /proc/net/tcp - TCP सॉकेट जानकारी
  • /proc/net/udp - UDP सॉकेट जानकारी

मुझे लगता है कि होना चाहिए ऐसा करने के लिए एक गैर-प्रोप तरीका, शायद /sys में भी? मैंने एक त्वरित रूप देखा लेकिन कुछ भी नहीं मिला।

+0

एकमात्र प्रासंगिक कर्नेल स्थिति फ़ाइल जिसे मैं पा सकता// dev/dev/net था। यह प्रति इंटरफेस आरएक्स-ओके और TX-OK की रिपोर्ट करता है। मुझे संदेह है कि ये ईथरनेट फ्रेम काउंटर हैं। मैं आईपीवी 4 और आईपीवी 6 पैकेट काउंटर कैसे प्राप्त करूं? ध्यान दें कि मैं कनेक्शन (सॉकेट) आंकड़ों के लिए नहीं, इसके विपरीत आंकड़े देख रहा हूं। –

2

या तो netstat -i के आउटपुट को बस पार्स करें। या strace netstat -i, और उस जानकारी का उपयोग करने के लिए जहां यह जानकारी की तलाश में है।

+0

नेटस्टैट रिपोर्ट प्रति इंटरफेस आरएक्स-ओके और TX-OK रिपोर्ट करता है। मुझे संदेह है कि ये ईथरनेट फ्रेम काउंटर हैं। मैं आईपीवी 4 और आईपीवी 6 पैकेट काउंटर कैसे प्राप्त करूं? –

1

ifconfig आपको स्थानांतरित डेटा (बाइट्स और पैकेट) की मात्रा बताता है।

+0

ifconfig प्रति इंटरफेस आरएक्स पैकेट और TX पैकेट रिपोर्ट करता है। मुझे संदेह है कि ये ईथरनेट फ्रेम काउंटर हैं। मैं आईपीवी 4 और आईपीवी 6 पैकेट काउंटर कैसे प्राप्त करूं? –

+0

कोई विचार नहीं:/मेरे पास आईपीवी 6 सिस्टम नहीं है इसलिए मैं यह नहीं बता सकता कि ifconfig वहां क्या प्रिंट करता है :( –

18

मेरे सिस्टम पर, /sys/class/net/eth0/statistics के तहत फ़ाइलें हैं, जो नेटवर्क इंटरफेस के बारे में विभिन्न आंकड़े देती हैं।

यह एक अस्पष्ट हालिया लिनक्स मान रहा है जिसमें /sys (sysfs) घुड़सवार है।

+0

फेडोरा 14: आरएक्स/TX का प्रतिनिधित्व करने के लिए अनुप्रयोग लिखने के लिए यह अच्छा विचार प्रतीत होता है। $ Php 'cat/sys/class/net/eth0/figures/tx_packets' – YumYumYum

+1

इन फ़ाइलों में ईथरनेट फ्रेम काउंटर शामिल हैं, आईपी संबंधित नहीं हैं?! (मुझे लगता है कि यह वास्तव में वही जानकारी है जो '/ proc/net/dev में निहित है 'या' ifconfig' के आउटपुट में सिवाय इसके कि यह सुविधाजनक 'एक काउंटर प्रति फ़ाइल' फॉर्म में है। –

+0

यह SLES11 SP2 पर काम करता है। धन्यवाद! – incognick

7
cat /proc/net/dev 

काउंटर, आंकड़े और जानकारी होना चाहिए।

netstat --statistics 

nstat -z 

cat /proc/net/dev_snmp6/eth0 gives ipv6 stats per interface 
1

निम्न कमांड IPv4/IPv6 आँकड़े सिस्टम-वाइड दे बनाए रखा आप आसानी से कर सकते हैं ethtool -S eth1

1

आप ethtool के साथ पूर्ण ईथरनेट आंकड़े मुद्रित कर सकते हैं:

-1

कि सी monodevelop में # में :

using System.Net.NetworkInformation; 

foreach (NetworkInterface ni in interfaces) 
{ 
    // perform your calculations 
}