Sida 1 av 1
Hur tar man reda på vilken dist man kör..?
Postat: 14 jun 2009, 22:56
av Osprey
Jag har flera olika distar på den här burken och ibland måste ett script veta vilken dist jag har igång när det körs...
I Ubuntu funkar det alldeles utmärkt med:
eller:
Men i t.ex Fedora funkar ingen av dessa...
Finns det något standardsätt att ta reda på vilken dist man har igång..?? Gärna något som funkar i BSD också...
[Edit] Jag vet ju att jag kan lägga in namnet i en vanlig textfil i t.ex /boot eller /etc på de olika dist:arna (inklusive BSD) och på så sätt ta reda på det, men det vore liksom mycket snyggare om det gick på ett "riktigt" sätt...

Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 00:05
av Emil.s
"lsb_release -a" borde funka då det är en del av LSB (Linux standard base), som de flesta distarna försöker att följa. Red Hat är med, så då borde ju Fedora vara med:
http://www.linuxfoundation.org/lsb-cert ... hp?by_prod
Men egentligen så finns det väl ingen standard. "lsb_release" brukar funka, alternativt kika vilken kärna som används.
Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 00:14
av Osprey
Emil.s skrev:Men egentligen så finns det väl ingen standard. "lsb_release" brukar funka, alternativt kika vilken kärna som används.
Problemet med "lsb_release" är att den inte finns installerad som standard, samtidigt som den egentligen bara hämtar information som redan finns någonstans och helst skulle jag vilja hämte den informationen själv. Jag har suttit och rotat runt lite i källkoden till lsb_release en stund nu, utan att hitta exakt hur den bär sig åt ännu...
Att titta på vilken kärna som körs säger egentligen inte mer än vilken version det är, även om en del distar lägger in "egen text" i namnet som t.ex fedora som just nu har "fc11" mitt inne i det. Men det är ändå inget bra sätt, dels eftersom det kommer att förändras, i det här fallet
kanske till fc12, fc13 etc. och detta bygger isåfall för mycket på antaganden, samtidigt som t.ex Ubuntu (och fler) inte har med något alls i kärn-namnet som antyder vilken dist den körs i.
Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 08:43
av Lars
Debian har ju /etc/debian_version (vilker Ubuntu iofs också har), och jag har för mig att Redhat har en liknande fil. Om du har flera distributioner på burken så kan du ju enkelt leta upp vad som är unikt för dem och knåpa ihop ett skript som kollar det.
Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 08:49
av Osprey
Tack för förslag.
Det längsta jag kommit just nu är:
Kod: Markera allt
#! /bin/bash
#
strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}'
Som iallafall funkar under Ubuntu, Fedora, Mandriva, openSUSE och Chakra, de enda jag provat än så länge...

Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 08:52
av dmz
Osprey skrev:Tack för förslag.
Det längsta jag kommit just nu är:
Kod: Markera allt
#! /bin/bash
#
strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}'
Som iallafall funkar under Ubuntu, Fedora, Mandriva, openSUSE och Chakra, de enda jag provat än så länge...

Om /etc/issue inte existerar, inte har önskat innehåll eller är tom så...?

Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 09:09
av Osprey
dmz skrev:Om /etc/issue inte existerar, inte har önskat innehåll eller är tom så...?

Om den inte existerar så är det ju lätt att hantera ("-e"), är den tom ("-z") så blir resultatet tomt och det är också ganska lätt att hantera. Har den istället fel innehåll så är det lite svårare... så länge olika distar får olika felaktigt resultat så är det lugnt, eftersom det ändå är unikt för disten, men om de skulle få exakt samma felaktiga resultat så är det lite svårare...
Det är bl.a därför som jag filtrerar bort "Welcome to " med sed i scriptet...
[Edit] Det jag menade med "-e" och "-z" ovan är alltså:
Kod: Markera allt
#! /bin/bash
#
if [ -e /etc/issue ]; then
if [ ! -z /etc/issue ]; then
strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}'
exit 0
else
echo "Unable to check dist - /etc/issue is empty"
fi
else
echo "Unable to check dist - /etc/issue does not exist"
fi
exit 1
Re: Hur tar man reda på vilken dist man kör..?
Postat: 15 jun 2009, 10:11
av Osprey
Nu har jag snickrat ihop det med lsb_release också, utifall att den finns. Däremot har jag inte brytt mig om att använda "sysctl -n kernel.version" eftersom jag vet att den ger fel resultat (inget alls om disten) i Fedora. Jag har också ändrat flestatus för exit när den inte lyckas, så att det blir en som någotsånär beskriver felet om man använder "perror" ("6" skulle kunna funka med).
Kod: Markera allt
#! /bin/bash
#
lsb=$(which lsb_release) > /dev/null 2>&1
if [[ $lsb == "" ]]; then
if [ -e /etc/issue ]; then
if [ ! -z /etc/issue ]; then
strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}'
exit 0
else
echo "Unable to check dist - /etc/issue is empty"
fi
else
echo "Unable to check dist - /etc/issue does not exist"
fi
else
lsb_release -d | awk '{ print $2 }'
exit 0
fi
exit 2
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 10:18
av Osprey
Så, nu har jag fixat till det så att scriptet klarar av lite fler system, det är inte längre bara Linux-distar heller, även om det är det som hanteras bäst:
Kod: Markera allt
#! /bin/bash
#
function lsb {
lsb=$(which lsb_release) > /dev/null 2>&1
if [[ $lsb != "" ]]; then
DIST=$(lsb_release -d | awk '{ print $2 }')
return 0
else
return 2
fi
}
function issue {
if [ -e /etc/issue ]; then
if [ ! -z /etc/issue ]; then
DIST=$(strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}')
else
return 2
fi
else
return 2
fi
return 0
}
function release {
if [ -f /etc/redhat-release ] ; then
if [ -z /etc/redhat-release ]; then
DIST="Redhat"
else
DIST=$(cat /etc/redhat-release |\
awk '{
print $1
}')
fi
elif [ -f /etc/arch-release ] ; then
if [ -z /etc/arch-release ]; then
DIST="Arch"
else
DIST=$(cat /etc/arch-release |\
awk '{
print $1
}')
fi
elif [ -f /etc/SuSE-release ] ; then
# Filen innehåller bara version, men inget
# om ifall det är SuSE eller opsnSuSE.
DIST="SuSE"
elif [ -f /etc/mandrake-release ] ; then
if [ -z /etc/mandrake-release ]; then
DIST="Mandrake"
else
DIST=$(cat /etc/redhat-release |\
awk '{
print $1
}')
fi
elif [ -f /etc/debian_version ] ; then
# Filen innehåller bara info om vilket
# versionsnummer av Debian det är, inget
# om vilken variant det är, typ Ubuntu etc.
DIST="Debian"
fi
}
OS=$(uname -s)
if [[ $OS == "Linux" ]]; then
lsb
if [ $? != 0 ]; then
issue
if [ $? != 0 ]; then
release
if [ $? != 0 ]; then
DIST="Linux"
fi
fi
fi
elif [[ $OS == "AIX" ]]; then
# Mer info finns via "oslevel".
DIST="AIX"
elif [[ $OS == "SunOS" ]]; then
# Mer info finns via "uname".
DIST="Solaris"
elif [[ $OS == "HP-UX" ]]; then
DIST="HP-UX"
elif [[ $OS == "OSF1" ]]; then
DIST="Tru64"
elif [[ $OS == "FreeBSD" ]]; then
DIST="FreeBSD"
elif [[ $OS == "OpenBSD" ]]; then
DIST="OpenBSD"
elif [[ $OS == "NetBSD" ]]; then
DIST="NetBSD"
fi
echo $DIST
exit 0
Av förklarliga skäl har jag inte kunnat testa det fullt ut i alla system, men det borde bara vara mindre ändringar som behövs, om det är något. Ni som har tillgång till olika system "i listan" får gärna testa och se vad ni får ut, säg gärna till om ni hittar några fel så att vi kan rätta till dem...
[Edit] Givetvis vet jag att bash måste vara installerat i de system där man kör det, om det är problem med det för något system så kunde man skriva om scriptet i sh...
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 11:04
av Konservburk
Varför går du på
/etc/issue före
/etc/*release? Den kan ju innehålla precis vad som helst eftersom det är meningen att man ska få ändra i den. Jag skulle i första hand gå på
/etc/*release och i andra hand på
/etc/*version, eftersom de flesta linux-distar brukar ha någon av dessa.
Finns ingen av dem skulle jag till att börja med undersöka om kärnan är taggad med distnamnet genom att ta en närmare titt på
/proc/version. Först därefter skulle jag börja fundera över mer tvivelaktiga metoder som
/etc/issue och liknande.
Osprey skrev:[Edit] Givetvis vet jag att bash måste vara installerat i de system där man kör det, om det är problem med det för något system så kunde man skriva om scriptet i sh...
Har t.ex. FreeBSD bash installerat som standard?
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 11:24
av Osprey
Konservburk skrev:Varför går du på /etc/issue före /etc/*release? Den kan ju innehålla precis vad som helst eftersom det är meningen att man ska få ändra i den. Jag skulle i första hand gå på /etc/*release och i andra hand på /etc/*version, eftersom de flesta linux-distar brukar ha någon av dessa.
Finns ingen av dem skulle jag till att börja med undersöka om kärnan är taggad med distnamnet genom att ta en närmare titt på /proc/version. Först därefter skulle jag börja fundera över mer tvivelaktiga metoder som /etc/issue och liknande.
Jag ska kika lite mer på dina förslag, men än så länge har jag fått bättre information från /etc/issue än från /etc/*release. Detsamma gäller /proc/version som jag iofs bara har kollat med "sysctl". En annan fördel med /etc/issue är att den heter likadant i alla system, vilket innebär att den kan ge svar även för system jag inte tänkt på och nämnt vid namn i koden...
Det största problemet här är egentligen att få scriptet att bedöma vilken information som är informativ. I vissa system innehåller /etc/*release och "sysctl -n kernel.version" bara ett versionsnummer som inte är särskilt meningsfullt. Enda sättet att få scriptet att bedöma vad som är relevant är isåfall att jämföra det man får ut med ett antal fasta fördefinierade strängar och det är kanske det bästa sättet, även om det kan bli lite bökigt. I praktiken blir det antagligen isåfall att jag får "grepa" efter fasta strängar som "Ubuntu", "Fedora" etc. i nämnda filer och det är kanske så jag ska göra...
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 11:42
av Konservburk
Jag vet inte exakt vad du vill få ut för information, men jag skulle till att börja med titta på själva filnamnet innan jag bryr mig om vad som faktiskt finns i filen. Du blir betydligt mer träffsäker genom att bara titta på filnamnet /etc/*release än om du bara använder dig av /etc/issue.
De flesta distar kör med /etc/distnamn-release. Ubuntu har förvisso /etc/lsb-release istället, men det indikerar isf att du kan falla tillbaka på lsb-metoden.
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 13:56
av Osprey
Konservburk skrev:Jag vet inte exakt vad du vill få ut för information, men jag skulle till att börja med titta på själva filnamnet innan jag bryr mig om vad som faktiskt finns i filen. Du blir betydligt mer träffsäker genom att bara titta på filnamnet /etc/*release än om du bara använder dig av /etc/issue.
De flesta distar kör med /etc/distnamn-release. Ubuntu har förvisso /etc/lsb-release istället, men det indikerar isf att du kan falla tillbaka på lsb-metoden.
Jag vill få ett enkelt sätt få fram vad jag kör och jag tittar redan på "lsb_release" och det jag egentligen vill få fram är vilken version av Unix, eller om så Linux jag kör. Jag vet inte helt säkert om det här är helt möjligt, men det borde vara det. Filnamnet på /etc/*release omfattar bara Linux och innehållet (om ej förekomsten) av den är inte helt klockrent... Jag vet att det här inte är helt enkelt, men det tror jag inte heller, även om det skulle kunna vara det...

Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 14:08
av Konservburk
En vettig grundstomme:
Kod: Markera allt
#!/bin/sh
DIST=$(uname -s)
case "$DIST" in
Linux)
cd /etc
for DIST in *release
do DIST="${DIST%?release}"
done
test -n "$DIST" ||
for DIST in *version
do DIST="${DIST%?version}"
done
case "$DIST" in
lsb) DIST=$(lsb_release -sd 2>&-) ;;
lfs) DIST="Linux From Scratch" ;;
slackware) DIST="Slackware" ;;
debian) DIST="Debian" ;;
gentoo) DIST="Gentoo" ;;
arch) DIST="Arch" ;;
mandriva) DIST="Mandriva" ;;
fedora) DIST="Fedora" ;;
redhat) DIST="Red Hat" ;;
yellowdog) DIST="Yellow Dog";;
knoppix) DIST="Knoppix" ;;
esac
;;
SunOS) DIST="Solaris" ;;
OSF1) DIST="Tru64" ;;
esac
echo "${DIST:-Unknown}"
exit
Sedan är det bara att fylla på med fler alternativ i case-satserna. Och orkar man inte det så blir det förmodligen hyffsat bra ändå. Vill du ha ännu bättre resultat så är det bara att lägga in diverse fallbacks, t.ex. kolla om kärnan eller gcc är dist-taggade.
Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 14:12
av Osprey
Tack, den var jättebra!! (har dock inte kollat alla möjligheter ännu)...

Re: Hur tar man reda på vilken dist man kör..?
Postat: 17 jun 2009, 15:10
av Osprey
En följdfråga till en annan vän här som jag vet även har kunskap inom ett annat OS....
Rancor: Vad får du för resultat under OpenVMS/Posix...??
Re: Hur tar man reda på vilken dist man kör..?
Postat: 05 jul 2009, 16:59
av Osprey
Ok, så här blev det, eller rättare sagt, så här ser det ut nu...
Bara att kopiera och använda för den som vill. Det är varken kompakt eller smartkodat, men däremot skrivet för att vara robust, dynamiskt, lätt att underhålla och lätt att modifiera...
Kod: Markera allt
#! /bin/bash
# --
# --
# -- NAMN
# --
# -- dist - Visa vilken distribution av Linux eller version av Unix som för
# -- tillfället är igång.
# --
# -- Programmet togs ursprungligen fram för att vi behövde ett sätt att i
# -- våra andra script kunna kolla vilket operativsystem som för tillfället
# -- är igång. Meningen med detta är att göra det möjligt att använda ett och
# -- samma script i flera olika versioner av Linux och Unix, trots de små
# -- skillnader som finns.
# --
# -- Med hjälp av detta program kan man då kontrollera vad det är som är
# -- igång och sedan styra de små skillnaderna med vilkor i sina egna script.
# --
# --
# -- FORMAT
# --
# -- dist -chilrs
# --
# --
# -- PARAMETRAR
# --
# -- Förutom -h och --help så är det bara under Linux som parametrarna har
# -- någon betydelse. Under Unix ignoreras de och påverkar inte funktionen
# -- på något sätt.
# --
# -- Orsaken till detta är att under t.ex Unix ger kommandot "uname -s" ett
# -- godtagbart namn på vilket operativsystem det är som körs, medan det
# -- under Linux bara skriver ut "Linux" och inget om vilken distribution
# -- det egentligen är.
# --
# -- -c, --contents
# --
# -- Försöker få fram information ur innehållet i filen /etc/*-release,
# -- detta kan jämföras med -r som bara tittar på namnet på denna fil.
# -- För t.ex openSUSE, så heter filen SuSE-release och man får gå in
# -- och titta på innehållet för att se att det handlar om openSUSE. För
# -- Chakra däremot så heter filen arch-release, samtidigt som den inte
# -- innehåller något och -r ger alltså då "Arch" medan -c inte ger
# -- något alls.
# --
# -- Alltså är -c att föredra för t.ex openSUSE, medan -r är ett bättre
# -- val för Chakra.
# --
# -- -h, --help
# --
# -- Visar en kort beskrivning av vilka möjligheter och funktioner
# -- som finns.
# --
# -- -i, --issue
# --
# -- Försöker hämta information från /etc/issue. Om filen inte finns
# -- eller om den är tom så returneras ett fel, annars försöker detta
# -- programmet att använda sig av informationen i den.
# --
# -- Värt att tänka på här är att innehållet i den här filen är inte
# -- på något sätt standardiserat, utan den kan i princip innehålla
# -- godtycklig information. Normalt sett är -r eller -c ett bättre
# -- val, men för t.ex Ubuntu ger -i ett bättre resultat.
# --
# -- -l, --lsb
# --
# -- Programmet försöker använda kommandot "lsb_release" för att
# -- hämta information. Om kommandot inte är installerat i det aktuella
# -- systemet så returneras ett fel, annars den information som kommandot
# -- gav.
# --
# -- Om detta kommando finns installerat så ger det ofta den mest korrekta
# -- informationen av vilken distribution som är aktuell.
# --
# -- -r. --release
# --
# -- Tittar på vad filen /etc/*-release heter. För Fedora heter den t.ex
# -- fedora-release och för Mandriva heter den mandriva-release. Se för
# -- övrigt -c ovan som beskriver mer om detta.
# --
# -- -s, --sum
# --
# -- Skriver bara ut "Linux" om det handlar om Linux och går inte in och
# -- försöker titta nogrannare på vilken distribution det är. I vissa
# -- fall kan det räcka med det här om man t.ex använder det i en miljö
# -- blandad av Linux och Unix. Man kan också använda den som en "sista
# -- utväg" om ingen annan information finns, genom att ange den sist i
# -- en rad av alternativ, som t.ex "-lrcis".
# --
# -- Man får alltså prova sig fram för att se vilken variant som ger bäst resultat
# -- för det system man kör programmet i.
# --
# -- Det är möjligt att blanda olika alternativ och att t.ex ange "-l -r -i" och
# -- dessa behandlas då i den ordning de är angivna. Så fort programmet hittar
# -- ett resultat som förefaller fullgott så avslutas exekveringen, oavsett om
# -- övriga alternativ är behandlade eller inte. På grund av detta kan resultatet
# -- påverkas mycket av ordningen på alternativen och även här får man prova sig
# -- fram.
# --
# -- Genom att exekveringen avbryts när ett resultat som ser ok ut har hittats, så
# -- kan man ange flera olika alternativ för säkethets skull, men som sagt så spelar
# -- ordningen stor roll.
# --
# -- Om inga alternativ anges, så använder sig programmet som standard (by default)
# -- av "-l -r -c -i", i angiven ordning. Denna standard och ordning finns som en
# -- variabel (DEFAULT_OPTS) i början av programmet och kan ändras om man vill ha
# -- andra alternativ eller en annan ordning på dem.
# --
# -- På kommandorden kan "-l -r -c -i" anges som "-lrci" istället, medan de i
# -- variabeln i början av programmet måste anges som explicita alternativ.
# -- En annan regel är att variabeln måste avslutas med "--", vilket frmgår om man
# -- tittar på den nedan i början av programmet.
# --
# -- Skulle man vilja så är det givetvis lätt att bygga på programmet så att det
# -- även skriver ut versionen av distributionen, men utifrån det vi använder det
# -- till så har detta inte varit aktuellt.
# --
# -- I dagsläget har vi själva inte till 100% kunnat testa programmet för alla
# -- Unix-varianter, men det bör gå lätt att ordna till de eventuella felaktigheter
# -- som finns.
# --
# --
# -- RETURSTATUS
# --
# -- Avslutar med status 0 om allt går bra, annars 2.
# --
# --
# -- SKRIVEN AV
# --
# -- Enargo Konsult, Fallkenberg Sweden -- http://www.enargo.com/it
# --
# --
# ------------------------------------------------------------------------
# -- This program is free software: you can redistribute it and/or modify
# -- it under the terms of the GNU General Public License as published by
# -- the Free Software Foundation, either version 3 of the License, or
# -- (at your option) any later version.
# --
# -- This program is distributed in the hope that it will be useful,
# -- but WITHOUT ANY WARRANTY; without even the implied warranty of
# -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# -- GNU General Public License for more details.
# --
# -- You should have received a copy of the GNU General Public License
# -- along with this program. If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------------
#
#
DEFAULT_OPTS="-l -r -c -i --"
#
function usage {
more << eof_usage
-c - Check contents of /etc/*-release
-h - Show this
-i - Check contents of /etc/issue
-l - Check output from lsb_release
-r - Check name of /etc/*-release
-s - In case of Linux just print 'Linux'
eof_usage
}
function lsb {
lsb=$(which lsb_release) > /dev/null 2>&1
if [[ $lsb != "" ]]; then
OS_NAME=$(lsb_release -d | awk '{ print $2 }')
return 0
else
return 2
fi
}
function issue {
if [ -e /etc/issue ]; then
if [ ! -z /etc/issue ]; then
OS_NAME=$(strings /etc/issue |\
head -1 |\
sed 's/Welcome to //g' |\
awk '{ \
print $1
}')
else
return 2
fi
else
return 2
fi
return 0
}
function release {
for dist in /etc/*-release; do
if [[ -e $dist ]]; then
if [[ ! -h $dist ]]; then
if [[ $(basename $dist) != "lsb-release" ]]; then
if [[ $RTYPE == 0 ]]; then
name=$(basename $dist|awk -F- '{ print $1 }')
OS_NAME=$(for i in $name; do \
B=`echo -n "${i:0:1}" |\
tr "[:lower:]" "[:upper:]"`;\
echo -n "${B}${i:1} ";\
done)
return 0
else
lines=$(cat $dist|wc -l)
if [[ $lines -ge 1 ]]; then
name=$(head -1 $dist|awk '{ print $1 }')
OS_NAME=$(for i in $name; do \
B=`echo -n "${i:0:1}" |\
tr "[:lower:]" "[:upper:]"`;\
echo -n "${B}${i:1} ";\
done)
return 0
fi
fi
fi
fi
fi
done
return 2
}
OS=$(uname -s)
if [[ $OS == "Linux" ]]; then
FOUND_OS=false
if [[ $@ != "" ]]; then
PARAMS=`getopt -a -o hilrcs --long lsb,release,issue,contents,sum,help -n 'dist' -- "$@"`
if [[ $? != 0 ]]; then
exit $?
fi
else
PARAMS=$DEFAULT_OPTS
fi
eval set -- "$PARAMS"
while true; do
case $1 in
-i|--issue)
issue
if [[ $? == 0 ]]; then
FOUND_OS=true
break
fi
shift
;;
-l|--lsb)
lsb
if [[ $? == 0 ]]; then
FOUND_OS=true
break
fi
shift
;;
-r|--release)
RTYPE=0
release
if [[ $? == 0 ]]; then
FOUND_OS=true
break
fi
shift
;;
-c|--contets)
RTYPE=1
release
if [[ $? == 0 ]]; then
FOUND_OS=true
break
fi
shift
;;
-s|--sum)
OS_NAME="Linux"
FOUND_OS=true
break
;;
-h|--help)
usage
break
;;
--)
shift
break
;;
*)
echo "Unknown -- "$1
break
;;
esac
done
elif [[ $OS == "AIX" ]]; then
# Mer info finns via "oslevel".
OS_NAME="AIX"
FOUND_OS=true
elif [[ $OS == "SunOS" ]]; then
# Mer info finns via "uname".
OS_NAME="Solaris"
FOUND_OS=true
elif [[ $OS == "HP-UX" ]]; then
OS_NAME="HP-UX"
FOUND_OS=true
elif [[ $OS == "OSF1" ]]; then
OS_NAME="Tru64"
FOUND_OS=true
elif [[ $OS == "FreeBSD" ]]; then
OS_NAME="FreeBSD"
FOUND_OS=true
elif [[ $OS == "OpenBSD" ]]; then
OS_NAME="OpenBSD"
FOUND_OS=true
elif [[ $OS == "NetBSD" ]]; then
OS_NAME="NetBSD"
FOUND_OS=true
fi
if [[ $FOUND_OS == true ]]; then
echo $OS_NAME
exit 0
fi
exit 2