Apakah ada cara yang dapat diandalkan untuk menentukan (secara terprogram) dari dalam skrip bash jika dijalankan pada laptop atau komputer desktop?
Saya jelas bisa meminta pengguna untuk bertanya kepada mereka, tapi itu cukup kikuk.
linux
shell-script
PseudoPsyche
sumber
sumber
Jawaban:
Melihat apakah sistem memiliki baterai atau tidak dapat diandalkan - UPS terhubung ke sistem (tidak hanya untuk daya, tetapi juga melalui USB juga untuk shutdown otomatis dan pemantauan baterai) dapat muncul sebagai baterai.
Namun ada cara bagus yang dapat diandalkan:
Pada laptop, ini akan mengembalikan salah satu dari "Laptop", "Notebook" "Portable", atau "Sub Notebook" (tergantung pada apa yang dikodekan pabrikan ke dalam BIOS). Ada daftar lengkap nilai yang mungkin di " Mengidentifikasi Jenis Chassis Komputer " di Windows 2000 Scripting Guide - jangan khawatir tentang itu menjadi halaman Microsoft TechNet, ini bukan OS spesifik.
dmidecode juga dapat memperoleh informasi tentang pabrik perangkat keras, nomor seri sistem (kadang-kadang), dll.
sumber
/sys/module/battery
?Other
..bashrc
file. Meminta isi/sys/class/dmi/id/chassis_type
, yang hanya satu nomor, jauh lebih baik (seperti yang ditunjukkan oleh jawaban lain di bawah).Solusi Debian:
Untuk mengetahui apakah mesin yang menjalankan Debian adalah laptop, coba:
Pendekatan ini tidak memerlukan
root
hak istimewa.Namun pada distribusi lain, direktori ini tampaknya ada, setidaknya dalam bentuk kerangka, terlepas dari ada atau tidaknya baterai. Dari komentar (di bawah), distribusi ini termasuk CentOS, Ubuntu, dan distribusi Linux Mint yang diturunkan dari Ubuntu.
Solusi Lebih Umum
Meskipun tidak bekerja pada sistem Debian saya, solusi yang diusulkan oleh Alex dilaporkan bekerja di Ubuntu & CentOS. Dengan demikian menyarankan, untuk generalisasi yang lebih besar, kemungkinan solusi gabungan:
Pendekatan ini tidak memerlukan
root
hak istimewa.Keterangan lebih lanjut
Pada sistem Debian dengan baterai yang sebenarnya,
/sys/module/battery
direktori berisi banyak file. Salah satu file tersebut adalah/sys/module/battery/initstate
yang berisi tekslive
. Namun pada Ubuntu, file-file ini tidak ada bahkan pada laptop sebenarnya. Dengan demikian, tampaknya keberadaan file/sys/module/battery/initstate
dapat digunakan untuk menguji laptop yang menjalankan Debian.Sebaliknya, pada sistem Debian yang saya uji,
/proc/acpi/battery
direktori tersebut tidak ada.sumber
Saya akan memeriksa apakah komputer memiliki baterai yang terpasang. Dan berikut ini adalah salah satu cara untuk menguji:
sumber
BAT0
keBAT*
- ini akan mendeteksi semua variasi.Untuk menghindari penggunaan sudo, Anda dapat membaca konten
/sys/class/dmi/id/chassis_type
. Tampaknya sesuai dengan tabel berikut:sumber
Jika memeriksa keberadaan baterai sudah cukup baik, Anda dapat menggunakan fungsi shell ini:
Telah menggunakan ini di Debian selama bertahun-tahun. Perhatikan ini berfungsi juga untuk Debian yang berjalan di WSL atau virtualbox.
Sunting: digeneralisasi dari jawaban lain di utas ini untuk menangkap lebih banyak kasus.
sumber