使用
dmidecode -s system-uuid
私は戻った:
/sys/firmware/dmi/tables/smbios_entry_point: Permission denied
/dev/mem: Permission denied
管理者パスワードを使用してもsudo
問題ありません。
Webサーバーデータベースでローカルコンピュータを識別するためにPythonスクリプトでUUIDを使用したいのですが、このローカルスクリプトは管理者権限で実行してはいけません。資格情報をハードコードしたくありません。どうですか?
同様の純粋なPythonメソッドがありますか
machineId = os.popen("cat /etc/machine-id").read()
?
拡張された質問
出力には、400権限を持つファイルと
dmidecode -s system-uuid
同じ値があります。/sys/devices/virtual/dmi/id/product_uuid
テスト目的で444に変更しましたが、管理者権限なしで読むことができます。危険がありますか?そうでない場合、問題は解決されます。Product-uuidとsystem-uuidは名前だけが異なり、同じですか?どのように計算されますか?コンピュータの電源を入れるたびに再起動する必要がありますか?
/sys/devices/virtual/dmi/id/product_uuid
ディスク全体がdd複製され、新しい/別のマザーボードで実行されている場合、保存されたこの値は変更されて上書きされますか?
machine-idを使用しない理由は、私が知っている限り、システム全体がddを介して複製され、他のマザーボードで使用されているときにmachine-idが変更/上書きされないためです。私は、サービスを簡素化するために、同じディスクイメージを持つ同じコンピュータセットで複数のPOSシステムを開発しています。ただし、それぞれは顧客のダッシュボードに登録され、他のタスクに割り当てる必要があります。
答え1
純粋なPythonメソッドはファイルを読むことですが、ご存知のように適切な権限が必要です。 UUIDを特権情報と見なさない限り、ファイル権限の変更は特に危険ではありませんが、システムが起動するたびに権限を変更する必要があります。
dmidecode -s system-uuid
同じ情報を示し、/sys/devices/virtual/dmi/id/product_uuid
システムファームウェアに保存され、理論的には一意です(ただし、一意性は保証されておらず、一部の製造業者はこのフィールドを適切に設定しません)。
代わりにそれを使用することをお勧めします/etc/machine-id
。システム複製プロセスからそれを削除したことを確認してください。バラより/etc/machine-idを変更できますか?もっと学ぶ。