GNU/Linux >> Belajar Linux >  >> Linux

Linux mendapatkan semua nama antarmuka jaringan

Anda dapat memeriksa entri mana dari getifaddrs milik keluarga AF_PACKET. Di sistem saya yang sepertinya mencantumkan semua antarmuka:

struct ifaddrs *addrs,*tmp;

getifaddrs(&addrs);
tmp = addrs;

while (tmp)
{
    if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_PACKET)
        printf("%s\n", tmp->ifa_name);

    tmp = tmp->ifa_next;
}

freeifaddrs(addrs);

getifaddrs() hanya akan mengembalikan alamat antarmuka Anda, bukan antarmuka itu sendiri.

Bagaimana jika salah satu antarmuka Anda tidak memiliki alamat, atau tidak ada alamat keluarga yang diminta, seperti yang disarankan dengan 'AF_PACKET'?

Di sini, contoh di mana saya memiliki antarmuka terowongan (dengan koneksi OpenVPN), dan di mana saya mencantumkan semua entri dari getifaddrs() untuk setiap antarmuka jaringan saya:

[0] 1: lo                address family: 17 (AF_PACKET) b4:11:00:00:00:01
                         address family: 2 (AF_INET)    address: <127.0.0.1>
                         address family: 10 (AF_INET6)  address: <::1>
[...]

[5] 10: tun0             address family: 2 (AF_INET)    address: <172.16.0.14>
[EOF]

Bam. Tidak ada AF_PACKET di antarmuka "tun0", tetapi TIDAK ada di sistem.

Sebaliknya, Anda harus menggunakan if_nameindex() syscall, yang melakukan apa yang Anda inginkan. Dengan kata lain, tanpa argumen, ia mengembalikan daftar semua antarmuka di sistem Anda:

#include <net/if.h>
#include <stdio.h>

int main (void)
{
    struct if_nameindex *if_nidxs, *intf;

    if_nidxs = if_nameindex();
    if ( if_nidxs != NULL )
    {
        for (intf = if_nidxs; intf->if_index != 0 || intf->if_name != NULL; intf++)
        {
            printf("%s\n", intf->if_name);
        }

        if_freenameindex(if_nidxs);
    }

    return 0;
}

Dan voila.


Linux
  1. Memulai dengan firewall Linux

  2. Konfigurasikan antarmuka jaringan sebagai klien DHCP di RHEL7 Linux

  3. Mengonfigurasi antarmuka jaringan dengan alamat IP Statis pada RHEL 7

  1. Cara mengatur alamat IP Statis di Debian Linux

  2. Ganti Nama Semua File dan Nama Direktori menjadi Huruf Kecil di Linux

  3. Bagaimana cara mendapatkan alamat MAC dari antarmuka jaringan WiFi?

  1. Cara Mengatur Alamat IP Statis dan Konfigurasi Jaringan di Linux

  2. Panduan IFTOP:Penggunaan Bandwidth Antarmuka Jaringan Display di Linux

  3. 'jaringan' Layanan OS Linux