Я вижу хорошее объяснение для получения информации о сетевых картах и их статистике в ubuntu на этот страница. Это дало хороший результат, как указано на странице. Я пробовал читать и другие документы, но не смог найти флага или чего-то подобного, по которому я мог бы различать настоящие и виртуальные сетевые карты в моей системе.
Есть ли способ отличить? Спасибо.
Проверить /sys/class/net/<device_name>
символическая ссылка. Если он указывает на /sys/devices/virtual/
, то это виртуальный интерфейс. Если он указывает на «настоящее» устройство (например, на /sys/devices/pci0000:00/
), то это не так.
Редактировать:
Из кода вы можете использовать readlink
чтобы проверить, является ли устройство виртуальным. Вот очень фиктивный пример кода для этого:
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv) {
char theLink[128];
char thePath[128];
strcpy(thePath,"/sys/class/net/");
memset(theLink,0,128);
if (argc>1) {
strcat(thePath,argv[1]);
} else {
printf("Gimme device\n");
return 1;
}
if (readlink(thePath, theLink, 127)==-1) {
perror(argv[1]);
} else {
if (strstr(theLink,"/virtual")) {
printf("%s is a virtual device\n",argv[1]);
} else {
printf("%s is a physical device\n",argv[1]);
}
}
}