¿Cómo puedo obtener una lista de unidades extraíbles (conectadas a USB) en Linux? Estoy de acuerdo con el uso de KDE, GNOME u otras librerías DE si facilita las cosas.Listado de todas las unidades USB en Linux
Respuesta
Creo que una buena idea es usar udev interface de python.
pequeño ejemplo (por supuesto en su caso de que tenga algún tipo de filtrado ajustar):
In [1]: import pyudev
In [2]: pyudev.Context()
In [3]: ctx = pyudev.Context()
In [4]: list(ctx.list_devices(subsystem='usb'))
Out[4]:
[Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2'),
Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2/2-0:1.0'),
Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2/2-2'),
Es una buena manera en la mayoría de los casos como los nuevos sistemas utilizan udev.
¿Alguna razón para no analizar los resultados de lsusb
? Estoy seguro de que hay módulos para esto, pero, de nuevo, fácil a veces es lo mejor.
no puedo ayudar con Python, Perl en que podría hacer:
#!/usr/bin/env perl
use strict;
use warnings;
my @data;
foreach (`lsusb`) {
next unless /Bus (\S+) Device (\S+): ID (\S+) (.*)/;
push @data, { bus => $1, device => $2, id => $3, info => $4 };
}
use Data::Printer;
p @data;
la que, en mi equipo, los resultados en
[
[0] {
bus 005,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[1] {
bus 004,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[2] {
bus 003,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[3] {
bus 002,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[4] {
bus 001,
device 003,
id "0bda:0158",
info "Realtek Semiconductor Corp. USB 2.0 multicard reader"
},
[5] {
bus 001,
device 002,
id "064e:a129",
info "Suyin Corp. "
},
[6] {
bus 001,
device 001,
id "1d6b:0002",
info "Linux Foundation 2.0 root hub"
}
]
Tenga en cuenta que Data::Printer
y su función p
son humanos Vertido de objetos amigables solo con fines de inspección.
No soy bueno con Perl pero ... creo que una mejor manera (generalmente) es usar el udev o algún módulo usb para Perl en lugar de analizar los comandos 'ls'. – spinus
Ciertamente, tanto Perl como Python tienen módulos para este fin, pero la salida de 'lsusb' es válida y hace el trabajo rápidamente. Como siempre, el nivel de rigor empleado depende del autor y su tarea. –
Después de todo este tiempo la cuestión quedó desbloqueado de nuevo ...
Al final he utilizado udisks través de la interfaz D-Bus como se muestra here.
Hace algún tiempo que me dieron este pequeño script (que no es mío), pero sin duda me ayudó mucho poner apenas para la referencia
#!/usr/bin/python
import sys
import usb.core
# find USB devices
dev = usb.core.find(find_all=True)
# loop through devices, printing vendor and product ids in decimal and hex
for cfg in dev:
try:
#print dir(cfg)
sys.stdout.write('Decimal VendorID=' + str(cfg.idVendor) + ' & ProductID=' + str(cfg.bDeviceClass) + ' ' + str(cfg.product) + ' ' + str(cfg.bDeviceSubClass)+ ' ' + str(cfg.manufacturer)+'\n')
except:
print
- 1. ¿Cómo puedo obtener todas las unidades USB (conectado)
- 2. listado todas las imágenes en un directorio usando PHP
- 3. listado todas las secciones interesantes de un tetraedro
- 4. Montar/Desmontar unidades USB con VBSCript
- 5. USB Port Speed Linux
- 6. ¿Cómo puedo encontrar todas las unidades en mi aplicación Delphi?
- 7. CakePHP/Jenkins/Phing - Ejecuta todas las pruebas de unidades
- 8. Enumerar unidades externas
- 9. Dispositivo de comunicaciones USB con múltiples puertos serie, que trabaja en todas las plataformas
- 10. ¿Agregar una unidad a las cláusulas de uso de todas las unidades en un proyecto?
- 11. evento usb connect/disconnect de linux
- 12. Git bash no puede identificar unidades flash USB
- 13. Linux: Cómo asignar controlador USB al dispositivo
- 14. ¿Cómo puedo obtener VID/PID desde unidades flash USB en C#?
- 15. ¿Cómo compilo en Linux para compartir con todas las distribuciones?
- 16. archivo de escritura en USB con el pitón en Linux
- 17. Lectura de salida de una cámara web USB en Linux
- 18. Número de serie de la unidad USB en Linux C++
- 19. Permisos de archivos de Linux para dispositivos USB en Android
- 20. Lectura de flujo de entrada USB en linux
- 21. C/C++ de Linux dirección MAC de todas las interfaces
- 22. Compilar C++ para todas las distribuciones de Linux
- 23. obtener todas las unidades de red mapeadas en la lista desplegable
- 24. Delphi - ¿Cómo obtener la lista de unidades de memoria extraíbles y memorias USB extraíbles?
- 25. Diferenciación programática entre unidad de disquete USB y unidad flash USB en Windows
- 26. Detectar unidad USB en Java
- 27. Cómo obtener todas las unidades en PC con .NET usando C#
- 28. listado de versiones múltiples en pypi
- 29. Linux: eliminando archivos que no contienen todas las palabras especificadas
- 30. Cómo detectar una conexión USB en linux/Qt
pregunta debería migrar a askubuntu –
@Viswanathan: "Linux" no es Ubuntu (que es, por supuesto, por qué tener un sitio askubuntu por separado es estúpido, pero estoy divagando) – geoffspear
¿Es esta una pregunta de programación? Porque las respuestas hasta ahora no están relacionadas con la programación. – Gabe