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アドレスを取得できます。私のシステムにはこのような動作がないので、実際にテストすることはできませんが、考えられる解決策は次のとおりです。
grep for
HWaddr
の出力は、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
。ハードドライブのUUIDに基づいてハッシュを作成します。
$ blkid | grep -oP 'UUID="\K[^"]+' | sha256sum | awk '{print $1}' 162296a587c45fbf807bb7e43bda08f84c56651737243eb4a1a32ae974d6d7f4