Czy istnieje jakiś niezawodny sposób na określenie (programowo) z poziomu skryptu bash, czy jest wykonywany na laptopie czy komputerze stacjonarnym?
Mógłbym oczywiście zachęcić użytkownika do zadawania pytań, ale jest to dość niezręczne.
linux
shell-script
PseudoPsyche
źródło
źródło
Odpowiedzi:
Sprawdzanie, czy system ma baterię, nie jest niezawodne - zasilacz UPS podłączony do systemu (nie tylko w celu zasilania, ale także przez USB, a także w celu automatycznego wyłączania i monitorowania baterii) może pojawić się jako bateria.
Istnieje jednak niezawodny sposób:
Na laptopie zwróci jeden z „Laptop”, „Notebook”, „Portable” lub „Sub Notebook” (w zależności od tego, co producent zakodował w systemie BIOS). Pełna lista możliwych wartości znajduje się w „ Identyfikowaniu typu obudowy komputera ” w Przewodniku skryptów Windows 2000 - nie martw się, że jest to strona Microsoft TechNet, nie jest to specyficzne dla systemu operacyjnego.
Kod dmidecode może również uzyskać informacje o producencie sprzętu, numerze seryjnym systemu (czasami) itp.
źródło
/sys/module/battery
?Other
.Rozwiązanie Debian:
Aby sprawdzić, czy komputer z systemem Debian jest laptopem, spróbuj:
To podejście nie wymaga
root
uprawnień.Jednak w innych dystrybucjach ten katalog wydaje się istnieć, przynajmniej w formie szkieletu, niezależnie od tego, czy jest bateria. Z komentarzy (poniżej), te dystrybucje obejmują CentOS, Ubuntu i pochodzącą z Ubuntu dystrybucję Linux Mint.
Bardziej ogólne rozwiązanie
Chociaż nie działa na moich systemach Debian, rozwiązanie zaproponowane przez Alexa podobno działa na Ubuntu i CentOS. Dlatego sugeruje, dla większej ogólności, możliwe połączone rozwiązanie:
To podejście nie wymaga
root
uprawnień.Więcej szczegółów
W systemie Debian z rzeczywistą baterią
/sys/module/battery
katalog zawiera wiele plików. Jednym z takich plików jest/sys/module/battery/initstate
tekstlive
. Jednak w Ubuntu pliki te nie istnieją nawet na rzeczywistych laptopach. Wygląda więc na to, że obecność pliku/sys/module/battery/initstate
może być użyta do przetestowania laptopa z systemem Debian.Natomiast w testowanych systemach Debian
/proc/acpi/battery
katalog nie istniał.źródło
Sprawdziłbym, czy komputer ma zainstalowaną baterię. Oto jeden ze sposobów testowania:
źródło
BAT0
naBAT*
- powinien wykryć wszystkie odmiany.Aby uniknąć używania sudo, możesz przeczytać zawartość
/sys/class/dmi/id/chassis_type
. Wygląda na to, że jest zgodny z następującą tabelą:źródło
Jeśli sprawdzanie obecności baterii jest wystarczające, możesz użyć tej funkcji powłoki:
Używam tego na Debianie od lat. Zauważ, że działa to również dla Debiana działającego w WSL.
Edycja: uogólniona na podstawie innych odpowiedzi w tym wątku, aby złapać więcej przypadków.
źródło