Ver si el sistema tiene o no una batería no es confiable:un UPS conectado al sistema (no solo para la alimentación, sino también a través de USB para el apagado automático y el monitoreo de la batería) puede aparecer como una batería.
Sin embargo, hay una manera agradable y confiable:
dmidecode --string chassis-type
En una computadora portátil, esto devolverá uno de "Laptop", "Notebook", "Portable" o "Sub Notebook" (dependiendo de lo que el fabricante codificó en el BIOS). Hay una lista completa de valores posibles en "Identificación del tipo de chasis de una computadora" en la Guía de secuencias de comandos de Windows 2000; no se preocupe si se trata de una página de Microsoft TechNet, no es específica del sistema operativo.
dmidecode también puede obtener información sobre el fabricante del hardware, el número de serie del sistema (a veces), etc.
Para evitar usar sudo, puede leer el contenido de /sys/class/dmi/id/chassis_type
. Parece ajustarse a la siguiente tabla:
- 1 Otro
- 2 Desconocido
- 3 Escritorio
- 4 Escritorio de bajo perfil
- Caja de 5 pizzas
- 6 minitorres
- Torre 7
- 8 Portátil
- 9 Ordenador portátil
- Cuaderno 10
- 11 de mano
- 12 estación de acoplamiento
- 13 todo en uno
- 14 cuadernos secundarios
- 15 ahorro de espacio
- 16 fiambreras
- 17 chasis del sistema principal
- 18 chasis de expansión
- 19 subchasis
- Chasis de expansión de 20 autobuses
- 21 Chasis periférico
- 22 chasis de almacenamiento
- 23 Chasis de montaje en bastidor
- 24 PC con caja sellada
Solución Debian:
Para averiguar si una máquina que ejecuta Debian es una computadora portátil, intente:
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
Este enfoque no requiere root
privilegios.
En otras distribuciones, sin embargo, este directorio parece existir, al menos en forma de esqueleto, independientemente de si hay o no una batería. Según los comentarios (a continuación), estas distribuciones incluyen CentOS, Ubuntu y la distribución de Linux Mint derivada de Ubuntu.
Solución más general
Aunque no funciona en mis sistemas Debian, la solución propuesta por Alex funciona en Ubuntu y CentOS. Así sugiere, para mayor generalidad, una posible solución combinada:
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo "Yes it's a laptop"
Este enfoque no requiere root
privilegios.
Más detalles
En un sistema Debian con una batería real, el /sys/module/battery
El directorio contiene muchos archivos. Uno de esos archivos es /sys/module/battery/initstate
que contiene el texto live
. En Ubuntu, sin embargo, estos archivos no existen ni siquiera en las computadoras portátiles reales. Por lo tanto, parece que la presencia del archivo /sys/module/battery/initstate
se puede usar para probar una computadora portátil que ejecuta Debian.
En los sistemas Debian que probé, por el contrario, el /proc/acpi/battery
directorio no existía.