Gibt es eine zuverlässige Möglichkeit, aus einem Bash-Skript heraus (programmgesteuert) festzustellen, ob es auf einem Laptop oder einem Desktop-Computer ausgeführt wird?
Ich könnte natürlich nur den Benutzer auffordern, sie zu fragen, aber das ist ziemlich klobig.
linux
shell-script
PseudoPsyche
quelle
quelle
Antworten:
Die Überprüfung, ob das System über eine Batterie verfügt, ist nicht zuverlässig. Eine an das System angeschlossene USV (nicht nur zur Stromversorgung, sondern auch zur automatischen Abschaltung und Batterieüberwachung über USB) wird möglicherweise als Batterie angezeigt.
Es gibt jedoch einen schönen zuverlässigen Weg:
Auf einem Laptop wird entweder "Laptop", "Notebook", "Portable" oder "Sub Notebook" zurückgegeben (je nachdem, was der Hersteller im BIOS codiert hat). Eine vollständige Liste der möglichen Werte finden Sie im Windows 2000-Skripthandbuch unter " Identifizieren des Gehäusetyps eines Computers ". 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. abrufen.
quelle
/sys/module/battery
?Other
..bashrc
Dateien nicht realisierbar . Das Abfragen des Inhalts von/sys/class/dmi/id/chassis_type
, bei dem es sich nur um eine einzelne Zahl handelt, ist viel besser (wie eine andere Antwort weiter unten zeigt).Debian-Lösung:
Um herauszufinden, ob ein Computer, auf dem Debian ausgeführt wird, ein Laptop ist, versuchen Sie:
Dieser Ansatz erfordert keine
root
Berechtigungen.Auf anderen Distributionen scheint dieses Verzeichnis jedoch zumindest in Skelettform zu existieren, 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 umfassen.
Allgemeinere Lösung
Obwohl es auf meinen Debian-Systemen nicht funktioniert, funktioniert die von Alex vorgeschlagene Lösung Berichten zufolge auf Ubuntu & CentOS. Aus Gründen der Allgemeinheit wird daher eine mögliche kombinierte Lösung vorgeschlagen:
Dieser Ansatz erfordert keine
root
Berechtigungen.Mehr Details
Auf einem Debian-System mit einer tatsächlichen Batterie
/sys/module/battery
enthält das Verzeichnis viele Dateien. Eine solche Datei/sys/module/battery/initstate
enthält den Textlive
. Unter Ubuntu existieren diese Dateien jedoch nicht einmal auf tatsächlichen Laptops. Es scheint also, dass das Vorhandensein der Datei/sys/module/battery/initstate
zum Testen eines Laptops unter Debian verwendet werden kann.Auf Debian-Systemen, die ich getestet habe,
/proc/acpi/battery
existierte das Verzeichnis dagegen nicht.quelle
Ich würde prüfen, ob auf dem Computer ein Akku installiert ist. Und das Folgende ist eine Möglichkeit zum Testen:
quelle
BAT0
aufBAT*
- Es sollten alle Variationen erkannt werden .Um die Verwendung von sudo zu vermeiden, können Sie den Inhalt von lesen
/sys/class/dmi/id/chassis_type
. Es scheint der folgenden Tabelle zu entsprechen:quelle
Wenn die Überprüfung der Akkukapazität ausreichend ist, können Sie die folgende Shell-Funktion verwenden:
Ich benutze dies seit Jahren unter Debian. Beachten Sie, dass dies auch für Debian funktioniert, das in WSL oder virtualbox ausgeführt wird.
Bearbeiten: Von anderen Antworten in diesem Thread verallgemeinert, um mehr Fälle zu fangen.
quelle