Solusi 1:
Cukup gunakan perintah seperti:ethtool eth0
untuk mendapatkan info yang dibutuhkan. Contoh:
$ sudo ethtool eth0 | grep Speed
Speed: 1000Mb/s
Solusi 2:
Dimungkinkan untuk menggunakan informasi dari kernel ketika ethtool hilang:
cat /sys/class/net/<interface>/speed
Contoh untuk antarmuka bernama eth0:
cat /sys/class/net/eth0/speed
Solusi 3:
CATATAN: halaman manual untuk mii-tool
memiliki penafian ini:
This program is obsolete. For replacement check ethtool.
Gunakan mii-tool
untuk melihat kecepatan jaringan yang dinegosiasikan.
Mis.
eth0: no link
eth1: negotiated 100baseTx-FD, link ok
Solusi 4:
Ada beberapa jawaban bagus di sini, saya hanya ingin menambahkan beberapa opsi lagi.
1. Saya tahu ini bukan yang Anda minta (baca terus untuk mengetahui cara lain). Namun jika Anda ingin mengetahui kinerja NIC Anda di dunia nyata , daripada seperti yang dikatakan komputer Anda, Anda dapat menggunakan iperf. Saya biasanya melakukan ini - karena Anda tidak pernah tahu. Saya membeli NIC 1Gb baru-baru ini yang hanya ditransfer pada 672Mbps tetapi uplink-nya adalah 1Gb. Untung saya sudah memeriksanya.
Anda membutuhkan dua komputer.
Di komputer satu, jalankan iperf dalam mode server:
iperf -s
Di sisi lain, jalankan iperf dalam mode klien:
iperf -c 192.168.0.10
Jika Anda ingin melihat kecepatan dupleks penuh, cobalah ini:
iperf -d -c 192.168.0.10
Ganti 192.168.0.10 untuk alamat IP server
2. Pada sistem Ubuntu, /var/log/kern.log
memiliki pencatatan peristiwa kernel yang terbatas. Ini akan merekam kecepatan tautan dan status NIC saat berubah. Saya yakin distribusi lain mungkin melakukan hal serupa atau dapat diatur untuk melakukannya.
$ 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. Anda mungkin tidak akan pernah sampai sejauh ini, tetapi Anda dapat menulis kode c bahwa untuk mendapatkan kecepatan. Diuji berfungsi dan root tidak diperlukan.
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);
}
Solusi 5:
Seperti yang disebutkan Khaled, Anda harus dapat menjalankan ethtool hanya dengan antarmuka sebagai argumen. Ini akan mencantumkan kecepatan yang didukung, kecepatan yang diiklankan, kecepatan saat ini, dan banyak hal lainnya juga:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
Anda juga dapat menjalankan dmesg
, dan grep untuk antarmuka Anda, tetapi ini mungkin tidak berfungsi jika sistem Anda telah berjalan lama dan buffer saat ini tidak lagi memiliki informasi itu (dalam hal ini, Anda harus grep /var/log/dmesg yang lebih lama .* file):
dmesg |grep eth0
[ 2.867481] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[ 19.429444] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 19.431555] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[ 19.449341] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 26.972379] e1000: eth0: e1000_set_tso: TSO is Enabled
[ 29.920458] eth0: no IPv6 routers present