শেল থেকে এবং মূল অধিকার ছাড়াই, আমি কীভাবে নির্ধারণ করতে পারি যে আমি রেড হ্যাট এন্টারপ্রাইজ লিনাক্সের সংস্করণটি চালাচ্ছি?
আদর্শভাবে, আমি উভয় প্রধান এবং গৌণ রিলিজ সংস্করণ পেতে চাই, উদাহরণস্বরূপ RHEL 4.0 বা RHEL 5.1 ইত্যাদি etc.
শেল থেকে এবং মূল অধিকার ছাড়াই, আমি কীভাবে নির্ধারণ করতে পারি যে আমি রেড হ্যাট এন্টারপ্রাইজ লিনাক্সের সংস্করণটি চালাচ্ছি?
আদর্শভাবে, আমি উভয় প্রধান এবং গৌণ রিলিজ সংস্করণ পেতে চাই, উদাহরণস্বরূপ RHEL 4.0 বা RHEL 5.1 ইত্যাদি etc.
উত্তর:
আপনি lsb_release
বিভিন্ন লিনাক্স বিতরণে কমান্ডটি ব্যবহার করতে পারেন :
lsb_release -i -r
এটি আপনাকে বিতরণ এবং সংস্করণ জানাবে এবং অ্যাডমিন বা কোনও সফ্টওয়্যার প্যাকেজ দ্বারা সংশোধিত হতে পারে বা নাও হতে পারে এমন ফাইলগুলিতে অ্যাক্সেস করার চেয়ে কিছুটা সঠিক। পাশাপাশি একাধিক ডিস্ট্রোস জুড়ে কাজ করছেন।
RHEL এর জন্য আপনার ব্যবহার করা উচিত:
cat /etc/redhat-release
lsb_release -i -r
-বাশ: lsb_re দয়া করে আদেশটি পাওয়া যায় নি। তবে, cat /etc/redhat-release
রেড হ্যাট এন্টারপ্রাইজ লিনাক্স সার্ভার 5.6 (টিকঙ্গা) প্রকাশ করেছে
আপনি / ইত্যাদি / রেডহ্যাট-রিলিজের সামগ্রীগুলি দেখতে পারেন যা দেখতে এরকম কিছু দেখবে:
$ cat /etc/redhat-release
CentOS release 5.4 (Final)
প্রকৃত আরএইচইএল সিস্টেমের জন্য সামগ্রীগুলি পৃথক different এই কৌশলটি সেন্টোস, ফেডোরা এবং অন্যান্য সহ সকল রেডহ্যাট ডেরিভেটিভসে কাজ করে।
lsb_release
প্রথমে চেষ্টা করার চেষ্টা করা হয়েছে, তবে যেহেতু ফাইলগুলির দিকে তাকানো ইনস্টল করা নাও হতে পারে এটি একটি ভাল পরিকল্পনা বি
আমি / ইত্যাদি / ইস্যু ফাইলটি ব্যবহার করতে পছন্দ করি।
$ cat /etc/issue
আমি অনেকগুলি পরিস্থিতি দেখেছি যেখানে সফ্টওয়্যার সামঞ্জস্যতার প্রয়োজনীয়তা পূরণের জন্য / ইত্যাদি / রেডহ্যাট-রিলিজটি সংশোধন করা হয়েছে (উদাহরণস্বরূপ ডেল বা এইচপির পরিচালনা এজেন্টস)।
/etc/issue
অন্যান্য ওএস যেমন ডিবিয়ান ও উবুন্টুতেও কাজ করে এবং লিনাক্স ওএসের সাথে কাজ করে যা লিনাক্স স্ট্যান্ডার্ড বেসের সাথে সামঞ্জস্য করে না এবং লাইটওয়েট ওএসে যেখানে lsb * ইউটিলিটি ইনস্টলড নেই।
/etc/issue
দ্বারা পার্স করা বোঝানো হয়েছে , যা সঠিক তথ্য দিয়ে পালানোর ক্রমগুলি প্রতিস্থাপন করে। আপনি যদি এটি ঠিক করেন তবে ফলাফলটি হস্তান্তরিত হতে পারে। ফেডোরায়, একজন পেয়ে যায় , যা আপনাকে কিছু বলে তবে আরএইচইএল 7-তে, কেবল পায় । cat
Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)
\S Kernel \r on an \m
/etc/issue
স্থানীয় প্রশাসক দ্বারা প্রতিস্থাপিত হতে পারে এবং তাই তথ্যের একটি নির্ভরযোগ্য উত্স নয়।
ইনস্টল করা না হওয়ার পরে সবচেয়ে নির্ভরযোগ্য উপায় হ'ল:lsb_release
# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server
# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6
ন্যূনতম ইনস্টলগুলিতে, lsb_release
অনুপস্থিত।
রেড হ্যাট ক্লোনগুলির সাহায্যে এটি কাজ করার জন্য (ক্রেডিট মন্তব্যগুলিতে যায়):
# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')
অথবা, একটি একক কমান্ড হিসাবে (দুটি "আরপিএম" চালিত হওয়ার চেয়ে):
# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'
আপনি যা চান তা পেতে UNIX সরঞ্জামগুলি ব্যবহার করে sed
/ cut
এবং অন্যান্য পাঠ্য ব্যবহার করুন।
rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'
এসএলটি বৈজ্ঞানিক লিনাক্সের জন্য; আপনি যদি অন্য RHEL পুনর্নির্মাণের সঠিক নামটি জানেন তবে নীচে মন্তব্য করতে পারেন। সতর্কতা - ব্যাপকভাবে পরীক্ষা করা হয় না।
rpm -qa | grep release
আরও সহজ
ধরে নিলে এটি সত্যই একটি রেড হ্যাট রিলিজ (সেন্টোস নয়):
rpm -q redhat-release
অথবা কেবল চালান:
uname -r
এবং আউটপুট মানচিত্র। 2.6.9 কার্নেলগুলি হ'ল RHEL4, 2.6.18 কার্নেলগুলি RHEL5। যদি প্রয়োজন হয় তবে আপনি রেড হ্যাট থেকে নির্দিষ্ট আপডেটের রিলিজের সম্পূর্ণ সংস্করণটি মানচিত্র করতে পারেন (অর্থাত্ 2.6.9-89 হল RHEL5 U4)।
rpm -q redhat-release
শুধু package redhat-release is not installed
আমার জন্য ফিরে আসে , এবং uname -r
কেবল কর্নেল রিলিজ আমাকে বলে।
আমি পছন্দ করি hostnamectl
:
$ hostnamectl
Static hostname: xxxxxx.xxx.xxx
Icon name: computer-server
Chassis: server
Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
Boot ID: 958452e0088b4191a4ea676ebc90403b
Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
Kernel: Linux 3.10.0-862.3.3.el7.x86_64
Architecture: x86-64
আমি এই /etc/os-release
ফাইলটি ব্যবহার করতে পছন্দ করি , যা আরপিএমের প্রকাশে রয়েছে:
# yum whatprovides /etc/os-release
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
* base: dl.za.jsdaav.net
* extras: dl.za.jsdaav.net
* updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo : base
Matched from:
Filename : /etc/os-release
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo : @anaconda
Matched from:
Filename : /etc/os-release
এই ফাইলটি স্ক্রিপ্টগুলিতে সস করা যেতে পারে:
$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)
আপনি যদি কেবল সংস্করণ নম্বরগুলি পেতে চান তবে নীচেরগুলি যতটা সংক্ষিপ্ত এবং সহজ হিসাবে আমি এটি পেতে পারি is
রেল 7.7, রেল .2.২, ডিবিয়ান ৮.৩ এবং উবুন্টু ১৪.০৪ তে পরীক্ষিত:
lsb_release -s -r | cut -d '.' -f 1
ব্যবহারিক উদাহরণের জন্য, বলুন যে আপনি বিতরণের প্রধান এবং গৌণ সংস্করণের জন্য পরীক্ষা করতে চান এবং তার ভিত্তিতে কিছু করতে চান:
#!/bin/bash
major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)
if (( "$major" >= 7 ))
then
echo "Do stuff, OS major version is $major"
echo "OS minor version is $minor"
else
echo "Do other things"
echo "Your version is $major.$minor"
fi
এটিতে দেরীতে আগমন, তবে বেশ কয়েকটি দূরবর্তী নোডে আরএইচইএল সংস্করণটি বের করার চেষ্টা করে আমি মজা পেয়েছি। সুতরাং, আপনার কাছে যদি এমন একটি সার্ভারের ব্যাচ থাকে যা একই পাসওয়ার্ড ব্যবহার করে (আমি জানি, আমি জানি ...) এখানে রেডহ্যাট সংস্করণটি যাচাই করার জন্য একটি দ্রুত এবং নোংরা:
একটি প্রত্যাশা স্ক্রিপ্ট তৈরি করুন
vim server-version.sh
স্ক্রিপ্টটি একাধিক দূরবর্তী হোস্টগুলিতে বড় রেডহ্যাট সংস্করণটি পরীক্ষা করার প্রত্যাশা করে
#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"
আপনার সমস্ত নোডের জন্য স্ক্রিপ্টটি চালান
[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;
আউটপুট
server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#
server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#
...