লিনাক্স হার্ড ড্রাইভ সিরিয়াল নম্বর অ মূল হিসাবে


15

প্রথমত, আমি হার্ডওয়ারের বিবরণ অন্তর্ভুক্ত না করার জন্য শিরোনামের জন্য ক্ষমা চাই। এটি কারণ আমি একটি কমান্ড সন্ধান করছি যা সমস্ত লিনাক্স বিতরণে কাজ করবে।

প্রশ্ন:

আমি লিনাক্সে খুব নতুন এবং অনেক কিছুই জানি না, তবে, হার্ড-ড্রাইভের সিরিয়াল নম্বরটি অ-মূল হিসাবে চালানো কি সম্ভব? আমি সচেতন যে sudo ব্যবহার করে চলমান এই তথ্য পুনরুদ্ধার করার জন্য কমান্ড রয়েছে available যাইহোক, sudo হিসাবে চালানো ছাড়া আমার এই তথ্যটি পুনরুদ্ধার করার একটি উপায় প্রয়োজন।

কোন পরামর্শ অত্যন্ত প্রশংসা করা হবে।

আন্তরিক শুভেচ্ছা,

মুস্তাফা

উত্তর:


19

বেশিরভাগ বর্তমান বিতরণে এইচডিডি সিরিয়াল নম্বরগুলি ইউদেব ডাটাবেসে সংরক্ষণ করা হয়, যেগুলি রুট অনুমতি ব্যতীত অনুসন্ধান করা যেতে পারে:

/sbin/udevadm info --query=property --name=sda

(চেহারার জন্য ID_SERIAL, ID_SERIAL_SHORT; এছাড়াও আছে /dev/disk/by-id/ata-*ATA ড্রাইভ যারা মান উপর ভিত্তি করে symlinks)।

udisksসেই ডেটাগুলিতে একটি উচ্চ-স্তরের ইন্টারফেস সরবরাহ করে এবং আরও অনেকগুলি (এটি রুট সুবিধার প্রয়োজন ছাড়াই স্মার্ট বৈশিষ্ট্যগুলিতে অ্যাক্সেস দেয়, যা কল করার জন্য প্রয়োজন হবে, যেমন, smartctlসরাসরি)।


আপনি ঠিক, শুধু চেষ্টা udisks --show-info.__ But__ এটা উল্লেখ করা আবশ্যক যে, যখন ব্যাচ মোডে বা সাধারণভাবে স্ক্রিপ্ট ব্যবহৃত udisksউপায় তুলনায় ধীর হয় udevadm
সিনট্যাক্সেরর

6

সাধারণত কাজ করে এমন আরেকটি উপায়:

ls -l /dev/disk/by-id/

এখানে একটি লাইন রয়েছে যা আপনাকে ড্রাইভ এবং মডেল / ক্রমিক সংখ্যাগুলির দ্রুত গণনা দেয়:

ls -l /dev/disk/by-id/ | grep scsi- | grep -v part | awk '{print $NF " " $(NF-2)}' | sed 's|../../||g' | sed 's/scsi-...._//g'  

বা রিমোট মেশিনের জন্য:

ssh $host "ls -l /dev/disk/by-id/ | grep scsi- | grep -v part | awk '{print \$NF \" \" \$(NF-2)}' | sed 's|../../||g' | sed 's/scsi-...._//g'"

এরপরে আপনি এই আউটপুটটি আরও প্রক্রিয়া করতে পারেন। বেশিরভাগ ড্রাইভের ধরণের জন্য, প্রতি লাইনে দ্বিতীয় স্ট্রিংটি হল MODEL_SERIAL।


2

ওমবল যেমনটি বলেছিলেন, রুট অ্যাক্সেস ছাড়াই বা কোনও প্রক্রিয়াতে রুট-জাতীয় অনুমতি প্রদান না করে আপনি এটি অর্জন করতে পারবেন না। তবে, যেহেতু আপনি বলেছিলেন যে আপনি নবাগত, তাই আপনাকে কল করা একটি সহজ কমান্ড সম্পর্কে আমি আপনাকে নোট করি lshw


ওম্বল এবং নিজের উভয়ের জন্য আপনাকে ধন্যবাদ, অনেক প্রশংসা করা। আপনি যে আদেশটি বলেছেন তা আমি তদন্ত করব।

1

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


আপনার দ্রুত প্রতিক্রিয়া Womble জন্য ধন্যবাদ। আমি এটা যেতে হবে।
মোস্তফা

0

/ দেব / ডিস্ক / বাই আইডির লিঙ্কগুলি ইউদেব দ্বারা তৈরি করা হয়েছে। /Etc/udev/rules.d/50-udev.rules এ এ জাতীয় লাইন পাওয়া যাবে:

KERNEL=="sd*[!0-9]|sr*", SYSFS{ieee1394_id}=="*", ENV{ID_SERIAL}="$sysfs{ieee1394_id}", ENV{ID_BUS}="ieee1394"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/usb_id -x"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -s %p -d $tempnode"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -a -s %p -d $tempnode"
KERNEL=="nst[0-9]*|st*|sd*[!0-9]|sr*|dasd*[!0-9]|cciss?c", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"

দুর্ভাগ্যক্রমে by-idডিভাইসের নাম থেকে এই সিমলিংকটি খুঁজে পাওয়া তুচ্ছ নয় । তবে কমপক্ষে একটি সরাসরি উপায় আছে:

$ udevinfo -q path -n /dev/sda
/block/sda
$ udevinfo -q symlink -p /block/sda
disk/by-id/scsi-SATA_KINGSTON_SVP100_31JY100MY5SK disk/by-path/pci-0000:00:11.0-scsi-0:0:0:0

একটি স্থান পৃথকীকরণ তালিকা ফিরে আসে। তাই by-idপথ খুঁজে পাওয়া যাবে।

অথবা আপনি সরাসরি "সম্মিলিত" সিরিয়াল নম্বর পেতে পারেন:

$ udevinfo -q env -p /block/sda
ID_VENDOR=ATA
ID_MODEL=KINGSTON_SVP100S
ID_REVISION=CJR1
ID_SERIAL=SATA_KINGSTON_SVP100_31JY100MY5SK
ID_TYPE=disk
ID_BUS=scsi
ID_PATH=pci-0000:00:11.0-scsi-0:0:0:0

ইন ID_SERIALপর গত আন্ডারস্কোর আপনি সিরিয়াল নম্বর পেতে পারেন।

আমি যেমন দেখি যে একটি ক্রমিক সংখ্যায় বর্ণমালার অক্ষর এবং '-' (আমার কাছে এই জাতীয় এসসিএসআই এইচডিডি রয়েছে) থাকতে পারে। সিরিয়াল নম্বর সম্পর্কে কেউ কি কোনও সীমাবদ্ধতা জানেন? এটি যদি '_' থাকতে পারে তবে এই পদ্ধতিটি বুলেট প্রুফ নয়।

ID_MODELহিসাবে (এটা আমার মনে হচ্ছে) তার প্রথম 15 অক্ষর যোগ করা হয় কী, আরো স্পষ্ট করে সিরিয়াল নম্বর শুরুতে চিহ্নিত করতে ব্যবহার করা যেতে পারে ID_SERIAL(দ্বারা _ 'প্রতিস্থাপিত স্পেস)।


উবুন্টুতে "উদেবিনফো" আমার পক্ষে কাজ করেনি। তবে, নীচের ওয়ান-লাইনারটি আমি যা চেয়েছিলাম ঠিক তেমনটি করেছিল: udevadm info -q property -xn sda | awk -F\' '/ID_SERIAL_SHORT/{print $2}'অবশ্যই, -q propertyবাদ দেওয়া যেতে পারে তবে আমি সর্বদা মনে করি এটি udevadmঅতিরিক্ত বিন্যাসের প্রয়োজন হয় না এমন আউটপুট আউট দেওয়ার জন্য এটি সম্পদের অপচয় ।
সিনট্যাক্সেরর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.