Как получить имена устройств в lsusb: несколько методов с примерами кода

Чтобы получить имя устройства в lsusb, вы можете использовать различные методы. Вот несколько примеров на разных языках программирования:

  1. Метод с использованием Python:

    import subprocess
    def get_device_name():
    output = subprocess.check_output(['lsusb']).decode('utf-8')
    lines = output.split('\n')
    device_names = []
    for line in lines:
        parts = line.split()
        if len(parts) >= 7:
            device_name = ' '.join(parts[6:])
            device_names.append(device_name)
    return device_names
    device_names = get_device_name()
    for name in device_names:
    print(name)
  2. Метод с использованием Bash:

    lsusb | awk '{print substr($0, index($0,$7))}'
  3. Метод с использованием C++ и библиотеки libusb:

    #include <iostream>
    #include <libusb-1.0/libusb.h>
    int main() {
    libusb_device devices;
    libusb_context *context = NULL;
    ssize_t count = 0;
    libusb_init(&context);
    count = libusb_get_device_list(context, &devices);
    for (ssize_t i = 0; i < count; i++) {
        libusb_device *device = devices[i];
        struct libusb_device_descriptor desc;
        libusb_get_device_descriptor(device, &desc);
        char device_name[256];
        libusb_get_string_descriptor_ascii(
            libusb_open_device_with_vid_pid(context, desc.idVendor, desc.idProduct),
            desc.iProduct,
            reinterpret_cast<unsigned char*>(device_name),
            sizeof(device_name)
        );
        std::cout << device_name << std::endl;
    }
    libusb_free_device_list(devices, 1);
    libusb_exit(context);
    return 0;
    }

Эти методы предоставят вам имена устройств, перечисленные в lsusb. Вы можете выбрать тот, который соответствует вашим предпочтениям в языке программирования или среде.