Es ist nicht zuverlässig, zu prüfen, ob das System über eine Batterie verfügt oder nicht - eine an das System angeschlossene USV (nicht nur für die Stromversorgung, sondern auch über USB zum automatischen Herunterfahren und zur Batterieüberwachung) kann als Batterie angezeigt werden.
Es gibt jedoch einen netten zuverlässigen Weg:
dmidecode --string chassis-type
Auf einem Laptop gibt dies entweder „Laptop“, „Notebook“, „Portable“ oder „Sub Notebook“ zurück (je nachdem, was der Hersteller im BIOS codiert hat). Eine vollständige Liste möglicher Werte finden Sie unter "Identifying the Chassis Type of a Computer" im Windows 2000 Scripting Guide - machen Sie sich keine Sorgen, dass es sich um eine Microsoft TechNet-Seite handelt, dies ist nicht betriebssystemspezifisch.
dmidecode kann auch Informationen über den Hardwarehersteller, die Seriennummer des Systems (manchmal) usw. erhalten.
Um die Verwendung von sudo zu vermeiden, können Sie den Inhalt von /sys/class/dmi/id/chassis_type
lesen . Es scheint der folgenden Tabelle zu entsprechen:
- 1 Sonstiges
- 2 Unbekannt
- 3 Desktop
- 4 Low-Profile-Desktop
- 5 Pizzaschachteln
- 6 Mini-Tower
- 7 Turm
- 8 Tragbar
- 9 Laptop
- 10 Notizbuch
- 11 Handheld
- 12 Dockingstation
- 13 Alles in Einem
- 14 Sub-Notizbuch
- 15 Platzsparend
- 16 Brotdose
- 17 Hauptsystemgehäuse
- 18 Erweiterungsgehäuse
- 19 Subchassis
- 20-Bus-Erweiterungsgehäuse
- 21 Peripheriegehäuse
- 22 Speichergehäuse
- 23 Gehäuse für Rackmontage
- 24 Sealed-Case-PC
Debian-Lösung:
Um herauszufinden, ob eine Maschine, auf der Debian läuft, ein Laptop ist, versuchen Sie:
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
Dieser Ansatz erfordert nicht root
Privilegien.
Auf anderen Distributionen scheint dieses Verzeichnis jedoch zumindest in Skelettform vorhanden zu sein, unabhängig davon, ob eine Batterie vorhanden ist oder nicht. Aus den Kommentaren (unten) geht hervor, dass diese Distributionen CentOS, Ubuntu und die von Ubuntu abgeleitete Distribution von Linux Mint enthalten.
Allgemeinere Lösung
Obwohl es auf meinen Debian-Systemen nicht funktioniert, funktioniert die von Alex vorgeschlagene Lösung Berichten zufolge auf Ubuntu und CentOS. Daher schlägt für eine größere Allgemeinheit eine mögliche kombinierte Lösung vor:
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo "Yes it's a laptop"
Für diesen Ansatz ist root
nicht erforderlich Privilegien.
Mehr Details
Auf einem Debian-System mit einer echten Batterie ist die /sys/module/battery
Verzeichnis enthält viele Dateien. Eine solche Datei ist /sys/module/battery/initstate
die den Text live
enthält . Unter Ubuntu existieren diese Dateien jedoch nicht einmal auf tatsächlichen Laptops. Somit scheint das Vorhandensein der Datei /sys/module/battery/initstate
kann verwendet werden, um einen Laptop zu testen, auf dem Debian läuft.
Auf von mir getesteten Debian-Systemen dagegen der /proc/acpi/battery
Verzeichnis existierte nicht.