Linuxでハードウェアモデル名を取得する

Linuxでハードウェアモデル名を取得する

文章を書いていますアプリケーション効果は同じです。新しく撮ったオプションが渡されるとき-w。メモリ、スワップ、CPU、バッテリ使用量、ホスト名、ローカルIP、カーネルバージョンなどの一部のシステム情報を表示します。

Neofetchのように「ホスト」を取得する方法を知りたいです。たとえば、

                   -`                    sourav@archlinux-arm 
                  .o+`                   -------------------- 
                 `ooo/                   OS: Arch Linux armv7l 
                `+oooo:                  Host: Raspberry Pi 3 Model B Rev 1.2 
               `+oooooo:                 Kernel: 4.19.108-1-ARCH 
               -+oooooo+:                Uptime: 10 mins 
             `/:-:++oooo+:               Packages: 804 (pacman) 
            `/++++/+++++++:              Shell: bash 5.0.16 
           `/++++++++++++++:             Resolution: 1366x768 
          `/+++ooooooooooooo/`           DE: Xfce 
         ./ooosssso++osssssso+`          WM: Xfwm4 
        .oossssso-````/ossssss+`         WM Theme: XFCE_Colour_Lite_Pink 
       -osssssso.      :ssssssso.        Theme: XFCE_Colour_Lite_Pink [GTK2], X 
      :osssssss/        osssso+++.       Icons: Papirus [GTK2], Tela-orange [GT 
     /ossssssss/        +ssssooo/-       Terminal: tilix 
   `/ossssso+/:-        -:/+osssso+-     CPU: BCM2835 (4) @ 1.350GHz 
  `+sso+:-`                 `.-/+oso:    Memory: 333MiB / 901MiB 
 `++:.                           `-/+/
 .`                                 `/                           

このメッセージを受け取りました。私のラップトップから:

                   -`                    sourav@archlinux 
                  .o+`                   ---------------- 
                 `ooo/                   OS: Arch Linux x86_64 
                `+oooo:                  Host: Inspiron 5567 
               `+oooooo:                 Kernel: 5.5.10-arch1-1 
               -+oooooo+:                Uptime: 3 hours 
             `/:-:++oooo+:               Packages: 1163 (pacman) 
            `/++++/+++++++:              Shell: bash 5.0.16 
           `/++++++++++++++:             Resolution: 1920x1080 
          `/+++ooooooooooooo/`           DE: Xfce 
         ./ooosssso++osssssso+`          WM: Xfwm4 
        .oossssso-````/ossssss+`         WM Theme: XFCE_Colour_Lite_Ruby 
       -osssssso.      :ssssssso.        Theme: XFCE_Colour_Lite_Purple [GTK2 
      :osssssss/        osssso+++.       Icons: Papirus [GTK2/3] 
     /ossssssss/        +ssssooo/-       Terminal: tilix 
   `/ossssso+/:-        -:/+osssso+-     CPU: Intel i3-6006U (4) @ 2.000GHz 
  `+sso+:-`                 `.-/+oso:    GPU: Intel Skylake GT2 [HD Graphics  
 `++:.                           `-/+/   Memory: 2814MiB / 3755MiB 
 .`                                 `/

私の問題はこの問題しかし、私のラズベリーパイが実行されていないdmidecode/sys/devices/virtual/dmi/また実行されていない)インストールされていないlshwので、私の質問に答えません。また、/etc/hostnameコンピュータのモデル名ではなく、単にアーチLinuxアームそしてアーキテクチャLinux。またはuname -a'cat /proc/versionラズベリーパイ'ラズベリーパイの文字列。

ほとんどのハードウェアでも実行する必要がある依存関係を使用せずに、neofetchなどのハードウェア名を取得する方法はありますか?

ベストアンサー1

ソースコードを読む新しく撮った混乱を明確にしました。 Neofetchバージョン7.0.0では、1174行目に条件付きチェックがあります。

if [[ -d /system/app/ && -d /system/priv-app ]]; then
    model="$(getprop ro.product.brand) $(getprop ro.product.model)"

elif [[ -f /sys/devices/virtual/dmi/id/product_name ||
    -f /sys/devices/virtual/dmi/id/product_version ]]; then
    model=$(< /sys/devices/virtual/dmi/id/product_name)
    model+=" $(< /sys/devices/virtual/dmi/id/product_version)"

elif [[ -f /sys/firmware/devicetree/base/model ]]; then
    model=$(< /sys/firmware/devicetree/base/model)

elif [[ -f /tmp/sysinfo/model ]]; then
    model=$(< /tmp/sysinfo/model)
fi

実際に詳細を得るために、単一のパスではなくさまざまなパスをチェックします。したがって、これはすべてのGNU / Linuxディストリビューションに適用されるハードコアチェックではありません。たとえば、最初のif条件は、Androidで見つけることができる特定のパスを識別します。

さまざまなディストリビューションとハードウェアでこのファイルをテストしました。

PCとラップトップ

私のすべてのシステムには/sys/devices/virtual/dmi/id/product_nameモデル情報があります。

Raspberry Pi 3モデルBとAndroid(7.0テスト済み)

私のRaspberry Pi 3 Model BとAndroidスマートフォンでは、このファイルには/sys/firmware/devicetree/base/modelモデル情報が含まれています。

仮想ボックス

DebianはVirtualboxで実行されており、NeofetchがVirtualbox 1.2ホストとして表示されますcat /sys/devices/virtual/dmi/id/product_name /sys/devices/virtual/dmi/id/product_version

ご注意ください、製品バージョンこれは改行文字かもしれませんので、ファイルを読み取り、文字列を連結してから末尾の改行文字を削除する(Rubyでは削除、削除!)ことをお勧めします。

したがって、すべての条件を入れて既存のファイルを確認した後、ファイルを読み取ってモデル情報を取得するのが合理的かもしれません。

おすすめ記事