পাইথনের সাথে ইউআইডি কীভাবে পাবেন?


1

সিস্টেম প্রতিবেদন 01234567-89ab-cdef-0123-456789abcdef ফর্ম্যাটে সিস্টেমের হার্ডওয়্যার UID প্রদর্শন করবে।

শেলটি ব্যবহার করে আমরা একই ইউআইডিটি পুনরুদ্ধার করতে পারি:

ioreg -rd1 -c IOPlatformExpertDevice | grep -E '(UUID)'

শেল কমান্ড কার্যকর না করে পাইথনে এই ইউআইডি পাওয়া সম্ভব?


প্রোগ্রামিং প্রশ্নগুলি এখানে অফ-টপিক। পরিবর্তে স্ট্যাকওভারফ্লো চেষ্টা করুন।
গেরি

উত্তর:


2

সংক্ষিপ্ত উত্তর: সত্যিই না।

দীর্ঘ উত্তর: সাজান, তবে এটি সম্ভবত এটির চেয়ে বেশি সমস্যা, যদি না আপনি সত্যিই কোনও কারণে শেল কমান্ডটি ব্যবহার না করতে পারেন। ওএস এক্স পাইথনের কাছে খুব বেশি সিস্টেম কনফিগারেশন প্রকাশ করে না। ওএস এক্স কনফিগার করতে বেশিরভাগ স্ক্রিপ্টযোগ্য ইন্টারফেসগুলি হ'ল শেল-ভিত্তিক বা অ্যাপলস্ক্রিপ্ট-ভিত্তিক (এবং অবশ্যই বিভিন্ন উদ্দেশ্য-সি এপিআই)।

অ্যাপলস্ক্রিপ্টে ইউআইডি পাওয়া সম্ভব:

tell application "System Information"
    set profile to system profile
    quit
end tell

set delim to AppleScript's text item delimiters
set AppleScript's text item delimiters to "Hardware UUID: "
set uuid to paragraph 1 of text item 2 of profile
set AppleScript's text item delimiters to delim
uuid

তবে আপনি দেখতে পাচ্ছেন, এটি কিছুটা বিশৃঙ্খলাযুক্ত (এবং ioregপদ্ধতিটির তুলনায় এটি অনেক ধীর গতিতে রয়েছে কারণ এটি পুরো সিস্টেমের প্রোফাইল প্রক্রিয়া করতে হবে)।

পাইথনে অ্যাপলস্ক্রিপ্ট ব্রিজ করার একটি উপায় রয়েছে, যা অ্যাপসক্রিপ্ট হিসাবে পরিচিত , তবে এটি আর বিকশিত হয়নি এবং নতুন প্রকল্পের জন্য প্রস্তাবিত নয়। তবে, আপনি যদি সত্যই নির্ধারিত হন তবে আপনি উপরের অ্যাপলস্ক্রিপ্টটিকে অ্যাপসক্রিপ্ট ব্যবহার করে পাইথনে রূপান্তর করতে পারেন। তবে সত্যি কথা বলতে কি খারাপ ফলাফল পাওয়া অনেক কষ্টের মতো বলে মনে হচ্ছে।


1

আমি এটি করতে সক্ষম, তবে আমি এখানে যেমন পাইবোজেসি ব্যবহার করি:

https://gist.github.com/pudquick/c7dd1262bd81a32663f0

import objc
from Foundation import NSBundle

IOKit_bundle = NSBundle.bundleWithIdentifier_('com.apple.framework.IOKit')

functions = [("IOServiceGetMatchingService", b"II@"),
             ("IOServiceMatching", b"@*"),
             ("IORegistryEntryCreateCFProperty", b"@I@@I"),
            ]

objc.loadBundleFunctions(IOKit_bundle, globals(), functions)

def io_key(keyname):
    return IORegistryEntryCreateCFProperty(IOServiceGetMatchingService(0, IOServiceMatching("IOPlatformExpertDevice".encode("utf-8"))), keyname, None, 0)

def get_hardware_uuid():
    return io_key("IOPlatformUUID".encode("utf-8"))

যদি ব্যবহারের জন্য আপনার টার্গেটটি ম্যাকোস সিস্টেম অজগর হয় তবে সৌভাগ্যক্রমে অ্যাপল ইতিমধ্যে প্রতিটি ম্যাকোস রিলিজের সাথে পাইবজেসি অন্তর্ভুক্ত করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.