यहां कुछ शानदार जवाब हैं, मैं बस कुछ और विकल्प जोड़ना चाहता था।
1. मुझे पता है कि यह वह नहीं है जो आपने पूछा था (अन्य तरीकों से पढ़ें)। लेकिन अगर आप अपने एनआईसी के वास्तविक विश्व प्रदर्शन को जानना चाहते हैं , बजाय इसके कि आपका कंप्यूटर क्या कहता है, तो आप iperf का उपयोग कर सकते हैं। मैं आमतौर पर ऐसा करता हूं - क्योंकि आप कभी नहीं जानते। मैंने हाल ही में 1Gb NIC खरीदा है जो केवल 672Mbps पर ट्रांसफर किया गया था लेकिन यह अपलिंक 1Gb था। अच्छी बात है कि मैंने जाँच की।
आपको दो कंप्यूटर की आवश्यकता होगी।
कंप्यूटर एक पर, सर्वर मोड में iperf चलाएं:
iperf -s
दूसरे पर, क्लाइंट मोड में iperf चलाएं:
iperf -c 192.168.0.10
यदि आप पूर्ण द्वैध गति देखना चाहते हैं, तो इसके बजाय यह प्रयास करें:
iperf -d -c 192.168.0.10
सर्वर आईपी पते के लिए 192.168.0.10 स्थानापन्न
2. उबंटू सिस्टम पर, /var/log/kern.log
गिरी घटनाओं के सीमित लॉगिंग है। यह बदलने पर एनआईसी की लिंक गति और स्थिति रिकॉर्ड करेगा। मुझे यकीन है कि अन्य वितरण शायद ऐसा ही कुछ करते हैं या ऐसा करने के लिए सेटअप हो सकते हैं।
$ tail -n 300 /var/log/kern.log.1 | grep slave0
Aug 28 12:54:04 haze kernel: [ 9452.766248] e1000e: slave0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Aug 28 12:54:41 haze NetworkManager[921]: <info> [1472403281.8486] device (slave0): link disconnected
Aug 28 12:54:41 haze kernel: [ 9489.898476] e1000e: slave0 NIC Link is Down
3. आप शायद कभी नहीं, कभी भी यह बहुत दूर जाने की जरूरत है, लेकिन आप गति प्राप्त करने के लिए सी कोड लिख सकते हैं । परीक्षण किए गए काम और रूट की आवश्यकता नहीं है।
https://stackoverflow.com/questions/2872058/get-link-speed-programmatically
#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
#include <linux/if.h>
#include <linux/ethtool.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
int sock;
struct ifreq ifr;
struct ethtool_cmd edata;
int rc;
sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
if (sock < 0) {
perror("socket");
exit(1);
}
strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));
ifr.ifr_data = &edata;
edata.cmd = ETHTOOL_GSET;
rc = ioctl(sock, SIOCETHTOOL, &ifr);
if (rc < 0) {
perror("ioctl");
exit(1);
}
switch (ethtool_cmd_speed(&edata)) {
case SPEED_10: printf("10Mbps\n"); break;
case SPEED_100: printf("100Mbps\n"); break;
case SPEED_1000: printf("1Gbps\n"); break;
case SPEED_2500: printf("2.5Gbps\n"); break;
case SPEED_10000: printf("10Gbps\n"); break;
default: printf("Speed returned is %d\n", edata.speed);
}
return (0);
}