আমি কীভাবে নির্ভরযোগ্যভাবে অপারেটিং সিস্টেমের নাম পেতে পারি?


69

বলুন যে আমি একটি রিমোট সিস্টেমে লগইন করেছি, কীভাবে এটি চলছে তা আমি জানতে পারি? বেশিরভাগ আধুনিক লিনাক্সে (লিনিস?) আপনার কাছে lsb_releaseকমান্ডটি রয়েছে:

$ lsb_release -ic    
Distributor ID: LinuxMint
Codename:       debian

যা আমি যতটা বলতে পারি ঠিক তেমন তথ্য দেয় /etc/lsb-release। সেই ফাইলটি না থাকলে কী হবে? আমি মনে করি যে lsb_releaseকমান্ডটি তুলনামূলকভাবে নতুন তাই যদি আমার কোনও পুরানো সিস্টেমের ওএস পেতে হয়?

যাইহোক , lsbএর জন্য দাঁড়িয়েছে Linux Standard Baseতাই আমি ধরে নিচ্ছি যে এটি নন-লিনাক্স ইউনিটগুলিতে কাজ করবে না। আমি যতদূর জানি, এই তথ্যগুলি পাওয়ার কোনও উপায় নেই unameতাই আমি ব্যবহার না করে এমন সিস্টেমে এটি কীভাবে পেতে পারি lsb_release?


1
লিনাক্সের জন্য unix.stackexchange.com/questions/6345/…uname -sলিনাক্সের বাইরে যথেষ্ট পরিমাণে হওয়া উচিত (সম্ভবত বিএসডিগুলির জন্য প্রত্যাশা)।
মাদুর

আপনি চেক আউট করেছেন facter? facter operatingsystemসমস্ত সিস্টেমে আপনি যা চান facterতা কাজ করা উচিত with
জোসেফ আর।

@JosephR। দেখতে দুর্দান্ত তবে ডিফল্টরূপে ইনস্টল করা নেই।
টেরডন

1
আমি facterপেস্টবিনে অপারেটিং সিস্টেমের নাম পেয়েছি এমন কোডটি পেস্ট করেছি । এটি এখানে সন্ধান করুন । এটি নির্ভরযোগ্যতার সাথে নাম পেতে অনেকগুলি পৃথক ফাইল পরীক্ষা করে।
জোসেফ আর।

@JosephR। বাহ, এটি অনেকগুলি ফাইল। আমি যখন সুযোগ পাবো তখন এটি পোর্ট করব, এটি যথেষ্ট পরিমাণে বহনযোগ্য। ধন্যবাদ!
terdon

উত্তর:


72

lsb_release -a সম্ভবত এই তথ্যটি খুঁজে বের করার জন্য আপনার সেরা বিকল্প হতে চলেছে এবং ধারাবাহিক উপায়ে এটি করতে সক্ষম হচ্ছি।

এলএসবির ইতিহাস

lsbযে কমান্ড প্রকল্প ঘোরা লিনাক্স স্ট্যান্ডার্ড বেস যা একটি ছাতা প্রকল্পের দ্বারা স্পন্সর লিনাক্স ফাউন্ডেশন বিভিন্ন লিনাক্স ডিস্ট্রো উপর জিনিষ মৌলিক ধরণের করছেন জন্য জেনেরিক পদ্ধতি প্রদান।

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

সনদ থেকে অংশ

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

এলএসবি সম্পর্কিত দরকারী লিঙ্কগুলি

সমালোচনা

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

নোভেল

আপনি যদি অনুসন্ধান করেন তবে আপনি সম্ভবত একটি সুনির্দিষ্ট তারিখযুক্ত পৃষ্ঠাটি দেখতে পাচ্ছেন শিরোনাম: নভেল থেকে অন্তর্নিহিত লিনাক্স ডিস্ট্রো সনাক্ত করা । আমি একটি আসল তালিকা দেখেছি এমন কয়েকটি স্থানে এটি একটি যা প্রধান কয়েকটি ডিস্ট্রোসকে দেখায় এবং আপনি কী ব্যবহার করছেন তা অন্তর্নিহিত কীভাবে সনাক্ত করতে পারে তা দেখায়।

উদ্ধৃতাংশ

Novell SUSE         /etc/SUSE-release
Red Hat             /etc/redhat-release, /etc/redhat_version
Fedora              /etc/fedora-release
Slackware           /etc/slackware-release, /etc/slackware-version
Debian              /etc/debian_release, /etc/debian_version,
Mandrake            /etc/mandrake-release
Yellow dog          /etc/yellowdog-release
Sun JDS             /etc/sun-release
Solaris/Sparc       /etc/release
Gentoo              /etc/gentoo-release
UnitedLinux         /etc/UnitedLinux-release
ubuntu              /etc/lsb-release

এই একই পৃষ্ঠায় একটি সহজ স্ক্রিপ্টও রয়েছে যা কেবল ভ্যানিলা unameকমান্ড এবং উপরের ফাইলগুলির একটির উপস্থিতি ব্যবহার করে উপরের জন্য কোড করার চেষ্টা করে।

দ্রষ্টব্য: এই তালিকাটি তারিখযুক্ত তবে আপনি তালিকা থেকে ম্যান্ড্রেকের মতো তারিখগুলি সহজেই বাদ দিতে পারেন এবং বিকল্পগুলি দিয়ে তাদের প্রতিস্থাপন করতে পারেন। আপনি যদি সোলারিস এবং লিনাক্স ভেরিয়েন্টগুলির বৃহত সোয়াথকে সমর্থন করার চেষ্টা করছেন তবে এই ধরণের স্ক্রিপ্টের মধ্যে একটি পদ্ধতির হতে পারে।

লিনাক্স মাফিয়া

আরও অনুসন্ধানের ফলে Linuxmafia.com এ রক্ষিত নিম্নলিখিত পৃষ্ঠাগুলি চালু হবে, শিরোনাম: / ইত্যাদি / সানড্রি লিনাক্স (এবং অন্যান্য ইউনিক্স) বিতরণের জন্য সমতুল্য মুক্তি । এটি সম্ভবত আমি এখন পর্যন্ত সর্বাধিক বিস্তৃত তালিকা। আপনি এই তালিকা কেস / স্যুইচ স্টেটমেন্ট সহ কোডটিফাই করতে পারেন এবং এটি আপনার সফ্টওয়্যার বিতরণের অংশ হিসাবে অন্তর্ভুক্ত করতে পারেন।

আসলে that পৃষ্ঠার নীচে একটি স্ক্রিপ্ট রয়েছে যা ঠিক তা করে। সুতরাং আপনি কেবল আপনার সফ্টওয়্যার বিতরণে তৃতীয় পক্ষ হিসাবে স্ক্রিপ্টটি ডাউনলোড এবং ব্যবহার করতে পারেন।

লিপি

#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux
# Distribution.

OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`

GetVersionFromFile()
{
    VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}

if [ "${OS}" = "SunOS" ] ; then
    OS=Solaris
    ARCH=`uname -p` 
    OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
    OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
    KERNEL=`uname -r`
    if [ -f /etc/redhat-release ] ; then
        DIST='RedHat'
        PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
        REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
    elif [ -f /etc/SuSE-release ] ; then
        DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
        REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
    elif [ -f /etc/mandrake-release ] ; then
        DIST='Mandrake'
        PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
        REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
    elif [ -f /etc/debian_version ] ; then
        DIST="Debian `cat /etc/debian_version`"
        REV=""

    fi
    if [ -f /etc/UnitedLinux-release ] ; then
        DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
    fi

    OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"

fi

echo ${OSSTR}

দ্রষ্টব্য: এই স্ক্রিপ্টটি পরিচিত দেখা উচিত, এটি নভেল একটির একটি আধুনিক সংস্করণ!

লেগরুম লিপি

আমি নিযুক্ত অন্য একটি পদ্ধতি হ'ল উপরের নভেল পদ্ধতির মতো আপনার নিজের স্ক্রিপ্টটি রোল করা তবে পরিবর্তে এলএসবি ব্যবহার করা। এই নিবন্ধটির শিরোনাম: লিনাক্স (বা ইউএনআইএক্স) বিতরণের নাম নির্ধারণের জেনেরিক পদ্ধতি , এর মধ্যে একটি পদ্ধতি দেখায়।

# Determine OS platform
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
# If Linux, try to determine specific distribution
if [ "$UNAME" == "linux" ]; then
    # If available, use LSB to identify distribution
    if [ -f /etc/lsb-release -o -d /etc/lsb-release.d ]; then
        export DISTRO=$(lsb_release -i | cut -d: -f2 | sed s/'^\t'//)
    # Otherwise, use release info file
    else
        export DISTRO=$(ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v "lsb" | cut -d'/' -f3 | cut -d'-' -f1 | cut -d'_' -f1)
    fi
fi
# For everything else (or if above failed), just use generic identifier
[ "$DISTRO" == "" ] && export DISTRO=$UNAME
unset UNAME

কোডের এই অংশটি কোনও সিস্টেমের /etc/bashrcবা এমন কোনও ফাইলের মধ্যে অন্তর্ভুক্ত করা যেতে পারে যা পরিবেশের পরিবর্তনশীল সেট করে $DISTRO

জিসিসি

এটি বিশ্বাস করুন বা না অন্য কোনও পদ্ধতিটি ব্যবহার করা gcc। আপনি যদি কমান্ডটি জিজ্ঞাসা করেন তবে আপনি gcc --versionডিসিস্রোটি পাবেন যেটি জিসিসি এর জন্য নির্মিত হয়েছিল, যা অদৃশ্যভাবে এটি চলমান সিস্টেমের মতো।

ফেডোরা 14

$ gcc --version
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
Copyright (C) 2010 Free Software Foundation, Inc.

CentOS 5.x

$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.

CentOS 6.x

$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
Copyright (C) 2010 Free Software Foundation, Inc.

উবুন্টু 12.04

$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.

টি এল; ডিআর;

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

আপডেট # 1: সুস সঙ্গে ফলোআপ

নীচের মন্তব্যে @ নীলদের সাথে কথা বলার সময় এটি নির্ধারিত হয়েছিল যে কোনও কারণেই, এসইএলইএস 11 এলএসবি ডিফল্টরূপে ইনস্টল করা থেকে বাদ দিতে দেখা গেছে। এটি কেবলমাত্র একটি বৈকল্পিক ইনস্টলেশন ছিল, যা এমন প্যাকেজটির জন্য পাল্টা মনে হয়েছিল যা এই ধরণের কী বৈশিষ্ট্য সরবরাহ করে।

তাই আমি কেন একটি ধারণা পেতে ওপেনসুএস প্রকল্পের কারও সাথে যোগাযোগ করার সুযোগ নিয়েছি।

ইমেলের অংশ

Hi Rob,

I hope you don't mind me contacting you directly but I found your info here: 
https://en.opensuse.org/User:Rjschwei. I participate on one of the StackExchange 
sites, Unix & Linux and a question recently came up regarding the best option 
for determining the underlying OS.

http://unix.stackexchange.com/questions/92199/how-can-i-reliably-get-the-operating-systems-name/92218?noredirect=1#comment140840_92218

In my answer I suggested using lsb_release, but one of the other users mentioned 
that this command wasn't installed as part of SLES11 which kind of surprised me. 
Anyway we were looking for some way to confirm whether this was intentionally 
dropped from SLES or it was accidental.

Would you know how we could go about confirming this one way or another?

Thanks for reading this, appreciate any help and/or guidance on this.

-Sam Mingolelli
http://unix.stackexchange.com/users/7453/slm

রব এর প্রতিক্রিয়া এখানে

Hi,

On 10/01/2013 09:31 AM, Sam Mingo wrote:
- show quoted text -

lsb_release was not dropped in SLES 11. SLES 11 is LSB certified. However, it 
is not installed by default, which is consistent with pretty much every other
distribution. The lsb_release command is part of the lsb-release package.

At present almost every distribution has an entry in /etc such as 
/etc/SuSE-release for SLES and openSUSE. Since this is difficult for ISVs and 
others there is a standardization effort going on driven by the convergence to 
systemd. The standard location for distribution information in the future will 
be /etc/os-release, although Ubuntu will probably do something different.

HTH,    
Robert

--  Robert Schweikert                           MAY THE SOURCE BE WITH YOU    
SUSE-IBM Software Integration Center                   LINUX    
Tech Lead    
Public Cloud Architect 

1
দ্রষ্টব্য: সবেমাত্র এআইএক্স এবং সানোএস সহ মেশিনগুলিতে একটি দ্রুত চেক করেছে। তারা lsb_re দয়া করে ইনস্টল করা আছে বলে মনে হয় না (এবং সর্বোপরি এটি ইউনিক্স লিনাক্স স্ট্যাক নয়)। জিসিসিতে সমস্যা হ'ল কিছু পিপিএল এখন ঝনঝন ব্যবহার শুরু করে। এছাড়াও আপনি কখনই নিশ্চিত হতে পারবেন না যে কোন সিসিটি তৈরি করতে ব্যবহৃত হয়েছিল (যে সিস্টেমে আমি কাজ করি সেখানে প্রতিটিের কমপক্ষে কয়েকটি সংস্করণ থাকে)। সুতরাং আমার ভোট পাইথন সমাধানে যায় কারণ মনে হয় এটি এখন ডিফল্টরূপে এখন সর্বত্র ইনস্টল করা আছে।
elmo

@ এলমো - হ্যাঁ এলএসবি হ'ল লিনাক্স স্ট্যান্ডার্ড বেস, তাই আমি এআইএক্স বা সুনোস উভয়েরই এটির আশা করব না। সানোএসের সাথে আমার অভিজ্ঞতা 15+ বছর, এবং যাদের সফ্টওয়্যার নিয়ে আমি কাজ করেছি তাদের বেশিরভাগই সাধারণত উপরে উল্লিখিতগুলির মতো নিজস্ব শেল স্ক্রিপ্ট সরবরাহ করে। সোলারিস 11 পর্যন্ত পাইথন কোনও বিকল্প ছিল না। এবং এটি এটিকে ক্র্যাক করা একটি কঠিন বাদাম তৈরি করে। আপনি যদি সোলারিস 9, 10, 11, এআইএক্স এবং কয়েকটি লিনাক্স ডিস্ট্রোস (সুস, উবুন্টু এবং আরএইচইএল) চালানোর দরকার হয় এমন সফ্টওয়্যার সরবরাহ করেন তবে আপনি কী করবেন? পাইথন কোনও বিকল্প নয়, সুতরাং আপনার হাতে একটি কোডেড শেল স্ক্রিপ্ট রয়েছে।
slm

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

@ ইলমো - এই ফাংশনের পিছনের কোডটি দেখুন, hg.python.org/cpython/file/2.7/Lib/platform.py#l259 । এটি LSB ব্যবহার করে বড় অবাক!
slm

@ এসএলএম: আমার সানোজ 5..১০ (যা আমি ধরে নিলাম যে আপনার তালিকায় এটি 10 ​​- এর সাথে আমি মেশিনে অ্যাক্সেস পেয়েছি - আমি সান সংস্করণ সংখ্যা / কনভেনশনগুলির সাথে তেমন পরিচিত নই) এবং এতে পাইথন রয়েছে। আমার কাছে এআইএক্স 7 সহ মেশিনে অ্যাক্সেস রয়েছে এবং এতে পাইথন রয়েছে। লিনাক্স মেশিনগুলির স্পষ্টতই এটিও রয়েছে। এখনও পাইথন দেখতে বেশিরভাগ পোর্টেবল পছন্দ বলে মনে হচ্ছে। 10 এর নীচে রৌদ্রের বিষয়ে আমি নিশ্চিত নই কেন এটি পাইথনটি ইনস্টল করতে দিবে না (স্বীকার করে বর্তমানের ইনস্টলটিতে অভাব রয়েছে অর্থাত্ এনক্রোস এবং সিটিপস নেই, সুতরাং কে জানে)। পাইথন যেমন এলএসবি ব্যবহার করে তবে লিনাক্সের জন্য এটি ডিফল্ট পদ্ধতিতে অবাক হওয়ার মতো কিছু নয়।
এলমো

16

যেহেতু আপনি সম্ভবত facterকোনও রিমোট সার্ভারে ইনস্টল করতে সক্ষম হবেন না , আপনি ওএসের নামটি খুঁজতে এটি কী করে তা নকল করতে পারেন। operatingsystemবাস্তবতার জন্য রুবি কোডটি পেস্টবিনে এখানে পাওয়া যাবে । মূলত, *-releaseওএসের নাম নির্ধারণের জন্য এটি বিভিন্ন ফাইল এবং অন্যদের মাধ্যমে দেখায় ।

কিছু ফাইল এটি দেখে:

/etc/debian_version
/etc/gentoo-release
/etc/fedora-release
/etc/mandriva-release
/etc/mandrake-release
/etc/meego-release
/etc/arch-release
/etc/oracle-release
/etc/enterprise-release
/etc/ovs-release
/etc/vmware-release
/etc/redhat-release
/etc/SuSE-release
/etc/bluewhite64-version
/etc/slamd64-version
/etc/slackware-version
/etc/alpine-release
/etc/system-release
/etc/centos-release

আপনি এই তালিকায় সদৃশ খুঁজে পেলে আমি দুঃখিত, আমি এটির সাথে দ্রুত উত্পাদন করেছিলাম grep। এটি পসিক্স শেল স্ক্রিপ্টে পোর্ট করতে মোটামুটি সহজ (কিছুটা ক্লান্তিকর হলেও) হওয়া উচিত।


5
"আপনি এই তালিকায় সদৃশ খুঁজে পেলে আমি দুঃখিত, আমি গ্রেপ দিয়ে এটি দ্রুত তৈরি করেছি।" ... | uniq?
new123456

@ new123456 ঠিক আছে। ধন্যবাদ। এখানে মূল শব্দটি হ'ল "দ্রুত" :)
জোসেফ আর।

এটি অগ্রহণযোগ্য করার জন্য দুঃখিত তবে @ এসএমএল এর উত্তর উপেক্ষা করার জন্য খুব বিস্তৃত :)।
টেরডন

3
/ ইত্যাদি / অস-মুক্তি সম্পর্কে কি?
ইয়াহেন ইয়াকিমোভিচ

1
@ new123456 প্রযুক্তিগতভাবে, এটি হওয়া উচিত ... | sort -uuniqকেবল সংলগ্ন অনন্য উপাদানগুলি সন্ধান করে।
পার্থিয়ান শট

9

আপনি যদি pythonইনস্টল করেছেন (পাইথন 3 বা পাইথন 2 কিনা তা বিবেচনা না করে), আপনি চক্রটিকে পুনরায় উদ্ভাবন না করেই বিতরণের নামটি খুঁজে পেতে পারেন :

python -c "import platform;print(platform.linux_distribution()[0])"

আপনি যদি এই বিকল্পটি ব্যবহার করতে প্ররোচিত হন তবে আপনার ওএস সমর্থিত তা নিশ্চিত করুন: hg.python.org/cpython/file/2.7/Lib/platform.py#l259 । : যদি না আপনি তালিকার আরো যোগ করতে পারেন coderwall.com/p/cwrenq
SLM

1
এটি প্রাচীন লিনাক্স বিতরণগুলির সাথে কাজ করবে না। উদাহরণস্বরূপ: SuSE 7.0 এর পাইথন 1.5.2 ছিল এবং প্ল্যাটফর্ম মডিউলটি 2003 সালে পাইথন ২.৩ এর আবির্ভাবের আগে যোগ করা হয়নি ;-)
পেফু

6

/etc/issueরিলিজ তথ্য থাকতে হবে। আমি মোটামুটি নিশ্চিত যে আমি এটি সোলারিস সিস্টেমে দেখেছি। একটি আধুনিক দেবিয়ান সিস্টেম থেকে ফাইলটি এখানে:

$ cat /etc/issue
Debian GNU/Linux 7 \n \l

$ 

/ ইত্যাদি / ইস্যু এফএইচএসেও বর্ণিত (যা কেবল লিনাক্স সিস্টেমের জন্য নয়) যদিও এটি " optionচ্ছিক "।


আহ, এটি একটি ভাল পরামর্শ, +1। এটি সর্বদা চলতে পারে না যদিও The file /etc/issue is a text file which contains a message or system identification to be printed before the login prompt.সিসাদমিনের মনে হয় যে সে যা ইচ্ছা লিখতে পারে।
টেরডন

2
/etc/issueসম্পূর্ণ অবিশ্বাস্য। (আমি XY সংস্করণে একটি /etc/issueব্যানার সহ সিস্টেমগুলি দেখেছি যে তারা খারাপ প্যাচ পরিচালনার পরে ওয়াইজেড। এটি একেবারে কোনও কিছু থাকতে পারে))
ম্যাট

সেই ফাইলটি পূরণ করার পরামর্শ দেওয়া হচ্ছে। লগইন করার অনুমতি কাদের মতো আইনি জিনিস legal
নিলস

সুরক্ষা নির্দেশিকা এবং অডিটর দ্বারা প্রস্তাবিত। আইনের ক্ষেত্রে একবার হ্যাকার শাস্তি ছাড়াই চলে আসেন, কারণ / ইত্যাদি / ইস্যুতে স্বাগতম
নিলস

@ ড্র্রুবেন এই পৃষ্ঠাটি আমার প্রথম মন্তব্যে যা বলেছিল তা বলেছে, সিস্টেমের তথ্য ধারণ করার প্রয়োজনীয়তার বিষয়ে এখানে কিছুই নেই। এটি প্রায়শই ঘটে।
terdon

6

আপনি সমস্ত ডিস্ট্রো জুড়ে একক কমান্ড থেকে নির্ভরযোগ্যভাবে ডিস্ট্রো নামটি পেতে পারেন না। কিছু / etc / * - রিলিজের মাধ্যমে এবং অন্যগুলি 'lsb-release' কমান্ডের মাধ্যমে উপলব্ধ।


ধন্যবাদ তবে ইউনিক্স বা অন্য কোনও লিন-লিনাক্স * নিক্সের কথা বিবেচনা করলে তা কোনও সহায়ক নয়।
terdon

3

আমি এই শেল কমান্ডটি লিনাক্স বিতরণের নির্দেশক স্ট্রিং পেতে ব্যবহার করেছি:

for f in $(find /etc -type f -maxdepth 1 \( ! -wholename /etc/os-release ! -wholename /etc/lsb-release -wholename /etc/\*release -o -wholename /etc/\*version \) 2> /dev/null); do echo ${f:5:${#f}-13}; done;

এই আদেশটি জোসেফ আর এর উত্তর এবং এসএমএল এর ভিত্তিতে তৈরি।

এটি কেবল / ইত্যাদি / {ওসনেম} -রেলিজ বা / ইত্যাদি / {ওসনেম vers _ রূপান্তর এবং নির্দিষ্ট ওস নাম মুদ্রণ করে for

এটি কাজ করে

  • সেন্টস (সেন্টো)
  • রেডহ্যাট (রেডহ্যাট)
  • ডেবিয়ান (ডেবিয়ান)
  • খিলান (খিলান)
  • ওপেনসু (ওপেনসুএস)
  • ফেডোরা (ফেডোরা)
  • উবুন্টু (ডেবিয়ান)

for f in /etc/*{_version,...*-release}; do [ -f "$f" ] && echo ${f:5:${#f}-13} ; doneতাদের সবার জন্য সমানভাবে কাজ করবে না ? আপনি প্রথমে findসমস্ত ফাইল কেন প্রবেশ করবেন তা আমি বুঝতে পারি না /etc
terdon

আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ, টেরডন, তবে আপনার কমান্ড কমপক্ষে সেন্ট ওএস এবং
ফেডোরায়


1

এসএনএমপি একটি সর্বব্যাপী পর্যাপ্ত প্রোটোকল যাতে বিভিন্ন ধরণের জিএনইউ / লিনাক্স বিতরণ এবং ইউএনআইএক্স সিস্টেমের মধ্যে পাওয়া যায়।

টার্গেট সিস্টেমে কোনও এসএনএমপি ডেমন চলমান রয়েছে তবে আপনি কোন ওএসের সাথে যোগাযোগ করছেন তা সন্ধান করতে SNMPv2-MIB- এর system.sysDescr.0অবজেক্টটি আপনাকে সহায়তা করতে পারে:

বিবরণ

সত্তার একটি পাঠ্য বিবরণ। এই মানটির মধ্যে সিস্টেমের হার্ডওয়ারের ধরণ, সফ্টওয়্যার অপারেটিং-সিস্টেম এবং নেটওয়ার্কিং সফ্টওয়্যারটির পুরো নাম এবং সংস্করণ সনাক্তকরণ অন্তর্ভুক্ত করা উচিত।

স্থিতি: বর্তমান

অ্যাক্সেস: কেবল পঠনযোগ্য

snmpget(1)র manpage কিভাবে উদাহরণ এই মান পুনরুদ্ধার করতে ব্যাখ্যা করে।


খসড়াটি হ'ল এটি একটি স্ট্যাটিক স্ট্রিং যা স্বয়ংক্রিয়ভাবে রক্ষণাবেক্ষণ হয় না।
নিলস

1

যেহেতু এটি করার কোনও সাধারণ উপায় নেই, তাই আমরা snmp exec-কমান্ডের মাধ্যমে একটি রিলিজ-স্ট্রিং সংজ্ঞায়িত করেছি।

এই আদেশটির কাজটি হ'ল ডিস্ট্রো এবং ওএসের বর্তমান / বড় / ছোট সংস্করণটি মুদ্রণ করা।

আরএইচ এবং ক্লোনগুলিতে আমরা সুস সুস-রিলিজে পার্স / ইত্যাদি / রেডহ্যাট-রিলিজ ...


'আমরা' কে? এবং ইউনিক্স সম্পর্কে?
টেরডন

@terdon আমরা কর্মক্ষেত্রে আমাদের দল। ইউনিক্সে আপনি যদি একই প্রসারণটি স্ন্যাম্পে সংকলন করা হয় তবে আপনি একই কাজ করতে পারেন।
নিলস

আহা, আমি ভেবেছিলাম আপনি কিছু স্ট্যান্ডার্ড গ্রুপের একজন ছিলেন :)
টেরডন

@ ইটারডন আপনার যখন 80 টিরও বেশি সার্ভার পরিচালনা করতে হয় আপনি সাইট-মানের বিকাশ শুরু করেন start আমরা এই পদ্ধতিটি বিকশিত করেছি যাতে আমরা ওএস পুরানো (ইওএল নাবালক বা আরও বড় সংখ্যার) নিরীক্ষণ করতে পারি
নিলস

1

এই থ্রেডটি থেকে আমি কী সংগ্রহ করতে পেরেছি সেখান থেকে আপনার ব্যবহার করে যে কোনও সিস্টেমের কাছাকাছি থেকে অভিশাপ পাওয়া উচিত:

if which lsb_release &>> /dev/null; then
    lsb_release -a
elif [ -r /etc/issue ]; then
    cat /etc/issue
else
    ls /etc/ | grep -e '[_-]release$' -e '[_-]version$' | xargs -I % -n 1 cat /etc/%
fi

2
এলএস এর আউটপুট পার্স করবেন না!
heinrich5991

@ হেনরিচ ৫৯৯১ কেন নয়?
সামিটিচ

প্রযুক্তিগতভাবে, সে এর আউটপুট পার্স করছে না ls। সে আউটপুট লেক্স করছে ls। তবে হ্যাঁ ... এটি ভুল কারণ /etc/issueপুরোপুরি অবিশ্বাস্য। সম্পূর্ণরূপে, সম্পূর্ণরূপে, সম্পূর্ণ অবিশ্বাস্য। এছাড়াও, আপনার অনুমান যে কেউ 'রিলিজ' বা 'সংস্করণ'-এ শেষ হওয়া কোনও নন-ওএস সম্পর্কিত ফাইল রাখতে পারে না বুদ্ধিমানের।
পার্থিয়ান শট

@ পার্থিয়ানশট তাই প্রধানত আপনি দ্বিতীয় এবং তৃতীয় স্তরের ফলব্যাক সম্পর্কে অভিযোগ করতে চান যে আরও নির্ভরযোগ্য বিকল্পগুলি উপলব্ধ নেই?
সংমিতিচ

@ সাম্মিচ more reliable optionsওয়েল, একটি জিনিসের জন্য কেবল একটি বিকল্প আছে। এমনকি এটি ধরে নিয়েও আমি আপনার অনুমানের সাথে একমত হয়েছি যে এটি আরও নির্ভরযোগ্য (যা আমি করি না), আসুন জিনিসগুলি বহুবচন করা শুরু করি না। দ্বিতীয়ত, যদি কেউ আপনার সমাধানটি প্রকৃতপক্ষে ব্যবহার করে থাকে এবং এটি অর্ধবার পুরোপুরি ব্যর্থ হয় তবে তারা "অন্যথায়" যদি এটি ব্যর্থ হয়ে পড়েছিল তবে তারা সান্ত্বনা পাবে না। আমার সিস্টেমগুলির কোনও lsbডিফল্টরূপে ইনস্টল করা হয়নি।
পার্থিয়ান শট

1

যদি কোনও পরিস্থিতি ডেকে আনা হয় তবে আপনি স্ন্যাপওয়াক [বা সাধারণভাবে এসএনএমপি প্রোটোকল] ব্যবহার করে দূরবর্তী অবস্থান থেকে সন্ধান করতে পারেন। একটি উদাহরণ নীচে:

snmpwalk -Os -c <snmp community string> -v1 <hostname> sysDescr.0

আউটপুট: sysDescr.0 = STRING: লিনাক্স উদাহরণ hostname.com 2.6.32-358.23.2.el6.x86_64 # 1 এসএমপি শনি 14 সেপ্টেম্বর 05:32:37 ইডিটি 2013 x86_64

নির্ভরযোগ্যতার মূল চাবিকাঠিটি হ'ল আপনার পরিবেশে এসএনএমপি সঠিকভাবে সেটআপ করা হচ্ছে কিনা, সমস্ত হোস্টের সঠিক সম্প্রদায়ের স্ট্রিং সেটআপ সহ স্ন্যাপ চলছে।


কি snpwalk? আমি এটি কোথায় খুঁজে পাব? এছাড়াও, এটি কেবল "লিনাক্স" মুদ্রণ করে, কোনও বিতরণের তথ্য নেই (যা আমি চাই তা unameআমাকে দিতে পারে Linux)। এটি কি নন-লিনাক্স ওএসগুলিতে কাজ করে? ইউনিক্স অন বলুন, বা বিএসডি না ওএসএক্স?
টেরডন

স্ন্যাম্পওয়াক একটি লিনাক্স কমান্ড লাইন ইউটিলিটি। এটি কেবল "লিনাক্স" মুদ্রণ করে না এটি কার্নেল সংস্করণও প্রিন্ট করে যা সত্যই আপনার প্রয়োজন হয়। যদি আপনার অন্যান্য হোস্টগুলিতে এসএনএমপি কনফিগার করা থাকে তবে এটি ইউনিক্স, বিএসডি, ওএসএক্স, স্যাম্পওয়াকটি স্ট্যান্ডার্ড (v1 | v2c | v3) হিসাবে কাজ করবে এবং এটি উইন্ডোজ হোস্টগুলিতে এমনকি জলের ওপারেও কাজ করবে। স্ন্যাম্পেজ বা স্ন্যাম্পেজেক্সটও দেখুন।
এক্সপ্রেস

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

it also prints the kernel version which is really the only thing you needতবে ... এটাই এই প্রশ্নের পুরো পয়েন্ট। যদি এটি সত্যই আপনার প্রয়োজন হয় তবে আপনি কেবল ব্যবহার করতে পারবেন uname -a। কার্নেল একটি অপারেটিং সিস্টেমের একটি গুরুত্বপূর্ণ অংশ, তবে এটি সম্পূর্ণ অপারেটিং সিস্টেম নয়। ফাইলসিস্টেম লেআউট এবং ইউজারল্যান্ড ইউটিলিটিস (যেমন প্যাকেজ ম্যানেজার) বিষয়।
পার্থিয়ান শট

1

ব্যবহার /etc/os-release:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.10 (Cosmic Cuttlefish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.10"
VERSION_ID="18.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=cosmic
UBUNTU_CODENAME=cosmic

কারণ ভাল একটি লিঙ্ক দ্বারা একটি প্রশ্ন ব্যাখ্যা করা আছে http://0pointer.de/blog/projects/os-release.html অযৌক্তিকভাবে দ্বারা উপলব্ধ @weberjn মধ্যে এই মন্তব্যটি । আমি কেবল এখানে ব্যবহারের বিরুদ্ধে একটি যুক্তি তালিকাভুক্ত করছি lsb_releaseযা ২০১৩ সাল থেকে এখন পর্যন্ত শীর্ষ উর্ধ্বমুখী উত্তর।

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


ধন্যবাদ, তবে গৃহীত উত্তর ইতিমধ্যে শেষের উদ্ধৃতিতে এটিকে সম্বোধন করে যা ব্যাখ্যা করে যে /etc/os-releaseএটি আরও মানক হয়ে উঠছে। যাইহোক, ফাইলটি সর্বদা সমস্ত সিস্টেমে থাকে না যার কারণে গৃহীত উত্তর আরও বহনযোগ্য বিকল্প দেয়। এছাড়াও, আপনি কেন সি কোড উল্লেখ করছেন তা আমি জানি না, প্রশ্নটি সি থেকে কিছু
চাওয়ার

@ ইটারডন আমি কেবল কৌতূহল বোধ করি 2018 এ কী সিস্টেমগুলি /etc/os-releaseঅনুপস্থিত? আমি অনুমান করি যে lsb_releaseডিফল্টরূপে পাঠানো হয় না এমন ব্যবস্থাগুলির তুলনায় তাদের ব্যবহারকারীর ভিত্তি দু : খজনক। কমপক্ষে আমি ফেডোরায় আপনার গৃহীত উত্তরটি ব্যবহার করতে পারিনি। সি মন্তব্য হিসাবে, এটি আমার নয়, তবে systemdআমি সরবরাহ করা 0 পয়েন্টার.ডি লিঙ্কের একটি উদ্ধৃতি ।
অ্যানাটোলি টেকটোনিক

হ্যাঁ, আমি জানি এটি আপনার নয়, আমি কেবল ভাবছিলাম যে আপনি কেন সি কোড সম্পর্কে একটি উক্তি প্রাসঙ্গিক বলে মনে করেছিলেন। এবং যতদূর আমি জানি, os-releaseবেশিরভাগ বা একচেটিয়াভাবে একটি লিনাক্স জিনিস। এটি FreeDesktop.org দ্বারা সংজ্ঞায়িত করা বলে মনে হচ্ছে , তাই সম্ভবত কিছু ইউনিক্স স্বাদও এটি ব্যবহার করে তবে আমি সন্দেহ করি আপনি এটি বেশিরভাগ বা এমবেডেড সিস্টেমে বা কোনও জি-জিআইআই সিস্টেম ইত্যাদিতে খুঁজে পাবেন Finally স্থিরতার কারণে এখনও খুব পুরানো মেশিন ব্যবহার করুন use
টেরডন

উদ্ধৃতিটি প্রায় lsb_releaseএবং আপনি সি এর সাথে প্রতিস্থাপন করতে পারেন এবং একই যুক্তিটি পেতে পারেন। চলমান ওভারহেড কেবল lsb_releaseস্ট্যাটিক ফাইলকে পার্স করার চেয়ে সুরক্ষা এবং পারফরম্যান্স পয়েন্ট উভয় থেকে অনেক বেশি। স্থিতিশীলতা সরবরাহকারী খুব পুরানো মেশিনগুলিতে আমি বিশ্বাস করি না। হৃদয়গ্রাহী এবং বন্ধুবান্ধবদের এগুলি অনেক আগেই নিয়ে যাওয়া উচিত ছিল, তাই কেবল ব্যবহার করুন/etc/os-release
অ্যানাটোলি টেকটোনিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.