Ubuntu
檢測網卡是否為Linux/bsd中的虛擬網卡(docker/veth/etc)
我在此頁面上看到了一些很好的解釋,用於在 ubuntu 中獲取有關網卡及其統計資訊的資訊。如頁面上所述,這給出了很好的輸出。我也嘗試閱讀其他文件,但找不到可以區分系統上真實網卡和虛擬網卡的標誌或類似內容。
有沒有辦法區分?謝謝。
檢查
/sys/class/net/<device_name>
符號連結。如果它指向/sys/devices/virtual/
,那麼它是一個虛擬介面。如果它指向一個“真實的”設備(例如 into/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]); } } }