一貫したシステム固有IDの生成

一貫したシステム固有IDの生成

uuuidgenなど、各PCに一意のIDを生成できますが、ハードウェアが変更されない限り、決して変更されませんか? CPUIDとMACADDRをマージしてハッシュして一貫したIDを生成しようとしていますが、bashスクリプトを使用して解析する方法がわかりません。私が知っているのは、CPUIDを取得する方法だけです。

dmidecode -t 4 | grep ID

そして

ifconfig | grep ether

次に、これらの16進文字列を結合し、sha1またはmd5を使用してハッシュして固定長16進文字列を生成する必要があります。
この出力をどのように解析しますか?

ベストアンサー1

これら二つはどうですか?

$ sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g'
52060201FBFBEBBF
$ ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g'
0126c9da2c38

その後、それらを組み合わせてハッシュできます。

$ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
       $(ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g') | sha256sum 
59603d5e9957c23e7099c80bf137db19144cbb24efeeadfbd090f89a5f64041f  -

末尾のダッシュを削除するには、別のパイプを追加します。

$ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
       $(ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g') | sha256sum |
  awk '{print $1}'
59603d5e9957c23e7099c80bf137db19144cbb24efeeadfbd090f89a5f64041f

@mikeservが指摘したように彼の答えに、インターフェイス名交換可能ブーツの間。つまり、今日のeth0が明日のeth1になる可能性があるため、grepを実行すると、異なるeth0ブートから別のMACアドレスを取得できます。私のシステムにはこのような動作がないので、実際にテストすることはできませんが、考えられる解決策は次のとおりです。

  1. grep forHWaddrの出力は、ifconfig特定のネットワークカードに対応するだけでなく、すべてを維持します。たとえば、私のシステムには次のものがあります。

    $ ifconfig | grep HWaddr
    eth1      Link encap:Ethernet  HWaddr 00:24:a9:bd:2c:28  
    wlan0     Link encap:Ethernet  HWaddr c4:16:19:4f:ac:g5  
    

    2つのMACアドレスを取得して次に転送すると、sha256sumどのNICの名前に関係なく、一意で信頼性の高い名前を取得できます。

    $ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
         $(ifconfig | grep -oP 'HWaddr \K.*' | sed 's/://g') | sha256sum |
          awk '{print $1}'
    662f0036cba13c2ddcf11acebf087ebe1b5e4044603d534dab60d32813adc1a5    
    

    ifconfigで返された2つのMACアドレスを渡したため、ハッシュは上記とは異なりますsha256sum

  2. ハードドライブのUUIDに基づいてハッシュを作成します。

    $ blkid | grep -oP 'UUID="\K[^"]+' | sha256sum | awk '{print $1}'
    162296a587c45fbf807bb7e43bda08f84c56651737243eb4a1a32ae974d6d7f4
    

おすすめ記事