Il n'est pas fiable de vérifier si le système dispose d'une batterie ou non :un onduleur connecté au système (pas seulement pour l'alimentation, mais également via USB pour l'arrêt automatique et la surveillance de la batterie) peut apparaître comme une batterie.
Il existe cependant un moyen fiable :
dmidecode --string chassis-type
Sur un ordinateur portable, cela renverra l'un des "Laptop", "Notebook" "Portable" ou "Sub Notebook" (selon ce que le fabricant a codé dans le BIOS). Il existe une liste complète des valeurs possibles dans "Identification du type de châssis d'un ordinateur" dans le Guide de script Windows 2000 - ne vous inquiétez pas qu'il s'agisse d'une page Microsoft TechNet, ce n'est pas spécifique au système d'exploitation.
dmidecode peut également obtenir des informations sur le fabricant du matériel, le numéro de série du système (parfois), etc.
Pour éviter d'utiliser sudo, vous pouvez lire le contenu de /sys/class/dmi/id/chassis_type
. Il semble conforme au tableau suivant :
- 1 autre
- 2 Inconnu
- 3 Bureau
- 4 ordinateurs de bureau discrets
- Boîte de 5 pizzas
- 6 mini-tours
- Tour 7
- 8 portables
- 9 ordinateur portable
- Cahier 10
- 11 portatif
- 12 stations d'accueil
- 13 tout-en-un
- 14 sous-carnet
- 15 Gain de place
- 16 boîtes à lunch
- 17 Châssis principal du système
- 18 châssis d'extension
- 19 sous-châssis
- Châssis d'extension à 20 bus
- 21 châssis périphériques
- 22 châssis de stockage
- Châssis à 23 montages en rack
- PC à 24 boîtiers scellés
Solution Debian :
Pour savoir si une machine exécutant Debian est un ordinateur portable, essayez :
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
Cette approche ne nécessite pas root
privilèges.
Sur d'autres distributions, cependant, ce répertoire semble exister, au moins sous forme de squelette, qu'il y ait ou non une batterie. D'après les commentaires (ci-dessous), ces distributions incluent CentOS, Ubuntu et la distribution dérivée d'Ubuntu de Linux Mint.
Solution plus générale
Bien que cela ne fonctionne pas sur mes systèmes Debian, la solution proposée par Alex fonctionnerait sur Ubuntu et CentOS. Suggère donc, pour plus de généralité, une solution combinée possible :
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo "Yes it's a laptop"
Cette approche ne nécessite pas root
privilèges.
Plus de détails
Sur un système Debian avec une batterie réelle, le /sys/module/battery
répertoire contient de nombreux fichiers. Un de ces fichiers est /sys/module/battery/initstate
qui contient le texte live
. Sur Ubuntu, cependant, ces fichiers n'existent même pas sur les ordinateurs portables réels. Ainsi, il apparaît que la présence du fichier /sys/module/battery/initstate
peut être utilisé pour tester un ordinateur portable exécutant Debian.
Sur les systèmes Debian que j'ai testés, par contre, le /proc/acpi/battery
répertoire n'existait pas.