Browse Source
more sparation and retrieve some informations about the available cpus and their capabilities. If we are on a GNU system this is done via nprocs and on a Linux via lscpu, if we are a GNU/Linux both are used, which is not the best way from a performance point of view, but it show that execution based on my classes works.
master
more sparation and retrieve some informations about the available cpus and their capabilities. If we are on a GNU system this is done via nprocs and on a Linux via lscpu, if we are a GNU/Linux both are used, which is not the best way from a performance point of view, but it show that execution based on my classes works.
master
9 changed files with 190 additions and 146 deletions
-
3classes.sh
-
32cpu_information.sh
-
102dist_information.sh
-
9gnu_information.sh
-
23host_information.sh
-
18interface_information.sh
-
9run.sh
-
134system_information.sh
-
4utils.sh
@ -0,0 +1,32 @@ |
|||
#!/bin/dash |
|||
|
|||
. ./utils.sh |
|||
include_once classes.sh |
|||
|
|||
gather_cpu_info() { |
|||
[ -z "${NCPUS}" ] || return |
|||
|
|||
has_class "GNU" && { |
|||
export NCPUS=$(${NPROC}) |
|||
} |
|||
|
|||
has_class "Linux" && { |
|||
eval $(${LSCPU} | ${AWK} -F: ' |
|||
{ sub(/^ */,"",$2) } |
|||
/Byte Order/ { |
|||
sub(/ /,"_",$2); |
|||
print "export BYTE_ORDER=\"" $2 "\";" |
|||
} |
|||
/CPU op-mode/ { |
|||
sub(/,/,"",$2); |
|||
print "export OP_MODES=\"" $2 "\";" |
|||
} |
|||
/CPU(s):/ { print "export NCPUS=" $2 ";" } |
|||
/Virtualization/ { print "export CPU_VIRT=\"" $2 "\";" }') |
|||
} |
|||
|
|||
CLASSES="${CLASSES}${NCPUS}cpus ${CPU_VIRT} ${BYTE_ORDER} ${OP_MODES} " |
|||
CLASSES="$(${ECHO} "${CLASSES}" | "${SED}" 's/ \+/ /g')" |
|||
} |
|||
|
|||
# vim: set ts=4 sw=4: |
|||
@ -0,0 +1,102 @@ |
|||
#!/bin/dash |
|||
|
|||
. ./utils.sh |
|||
|
|||
## |
|||
# if we are on a linux try to figure out wich distribution we are |
|||
# running. |
|||
# First look what kind of realease file we have: |
|||
# |
|||
# 00 01 - Novell SuSE ---> /etc/SuSE-release |
|||
# 00 02 - Red Hat ---> /etc/redhat-release, /etc/redhat_version |
|||
# 00 04 - Fedora ---> /etc/fedora-release |
|||
# 00 08 - Slackware ---> /etc/slackware-release, /etc/slackware-version |
|||
# 00 10 - Debian ---> /etc/debian_release, /etc/debian_version |
|||
# 00 20 - Mandrake ---> /etc/mandrake-release |
|||
# 00 40 - Yellow dog ---> /etc/yellowdog-release |
|||
# 00 80 - Sun JDS ---> /etc/sun-release |
|||
# 01 00 - Solaris/Sparc ---> /etc/release |
|||
# 02 00 - Gentoo ---> /etc/gentoo-release |
|||
# |
|||
# Here I follow a pessimistic way because I prefere to have no |
|||
# identification at all over a wrong one...so I check for all these files. |
|||
# If I can't find any or find multiple of them I assume this system |
|||
# as unidentified. Anyway when I found one I still check the content... |
|||
# Here I need some help as I don't know the valid content of these files. |
|||
# For now I assume that at least the name of the distribution is in |
|||
# the file. |
|||
# |
|||
gather_dist_info() { |
|||
[ -z "${DIST}" ] || return |
|||
|
|||
case "${OS}" in |
|||
*Linux*) |
|||
local SUSE=1 |
|||
local REDHAT=2 |
|||
local FEDORA=4 |
|||
local SLACKWARE=8 |
|||
local DEBIAN=16 |
|||
local MANDRAKE=32 |
|||
local YELLOWDOG=64 |
|||
local SUNJDS=128 |
|||
local GENTOO=256 |
|||
local SOLARIS=512 |
|||
|
|||
local LAST=${SOLARIS} |
|||
|
|||
local CHK=$((SUSE|REDHAT|FEDORA|SLACKWARE|DEBIAN|MANDRAKE|\ |
|||
YELLOWDOG|SUNJDS|GENTOO|SOLARIS)) |
|||
|
|||
eval local FILES_${SUSE}=\'/etc/SuSE-release\' |
|||
eval local FILES_${REDHAT}=\'/etc/redhat-release /etc/redhat_version\' |
|||
eval local FILES_${FEDORA}=\'/etc/fedora-release\' |
|||
eval local FILES_${SLACKWARE}=\'/etc/slackware-release /etc/slackware-version\' |
|||
eval local FILES_${DEBIAN}=\'/etc/debian_release /etc/debian_version\' |
|||
eval local FILES_${MANDRAKE}=\'/etc/mandrake-release\' |
|||
eval local FILES_${YELLOWDOG}=\'/etc/yellowdog-release\' |
|||
eval local FILES_${SUNJDS}=\'/etc/sun-release\' |
|||
eval local FILES_${GENTOO}=\'/etc/gentoo-release\' |
|||
eval local FILES_${SOLARIS}=\'/etc/release\' |
|||
|
|||
local CUR=1 |
|||
while [ ${CUR} -le ${LAST} ] |
|||
do |
|||
local DIR |
|||
|
|||
eval local FILES=\"\${FILES_${CUR}}\" |
|||
|
|||
for DIR in ${FILES} |
|||
do |
|||
[ -f ${DIR} ] || CHK=$((CHK&~CUR)) |
|||
done |
|||
|
|||
CUR=$((CUR*2)) |
|||
done |
|||
|
|||
DIST="Unknown" |
|||
|
|||
[ ${CHK} -eq ${SUSE} ] && DIST="Suse" |
|||
[ ${CHK} -eq ${REDHAT} ] && DIST="Redhat" |
|||
[ ${CHK} -eq ${FEDORA} ] && DIST="Fedora" |
|||
[ ${CHK} -eq ${SLACKWARE} ] && DIST="Slakware" |
|||
[ ${CHK} -eq ${DEBIAN} ] && DIST="Debian" |
|||
[ ${CHK} -eq ${MANDRAKE} ] && DIST="Mandrake" |
|||
[ ${CHK} -eq ${YELLOWDOG} ] && DIST="Yellowdog" |
|||
[ ${CHK} -eq ${SUNJDS} ] && DIST="Sun" |
|||
[ ${CHK} -eq ${GENTOO} ] && DIST="Gentoo" |
|||
[ ${CHK} -eq ${SOLARIS} ] && DIST="Solaris" |
|||
|
|||
if [ 'Unknown' != "${DIST}" ] |
|||
then |
|||
eval ${GREP} -iq ${DIST} \${FILES_${CHK}} || DIST="Unknown" |
|||
fi |
|||
|
|||
CLASSES="${CLASSES}${DIST} ";; |
|||
*) |
|||
DIST="${OS}" |
|||
esac |
|||
|
|||
export DIST CLASSES |
|||
} |
|||
|
|||
# vim: set ts=4 sw=4: |
|||
@ -1,16 +1,15 @@ |
|||
#!/bin/dash |
|||
|
|||
## |
|||
# This creates function that will gather some system informations |
|||
# and propagate them as environment variables. |
|||
# The GNU way for more information |
|||
# |
|||
|
|||
. ./utils.sh |
|||
include_once system_information.sh |
|||
|
|||
echo "foo ${NPROC}" |
|||
CPUS=$(${NPROC}) |
|||
gather_gnu_information() { |
|||
export CPUS=$(${NPROC}) |
|||
|
|||
export CLASSES="${CLASSES}${CPUS}cpus " |
|||
} |
|||
|
|||
# vim: set ts=4 sw=4: |
|||
@ -0,0 +1,23 @@ |
|||
#!/bin/dash |
|||
|
|||
. ./utils.sh |
|||
|
|||
## |
|||
# start guessing the system type via uname and export it. |
|||
# |
|||
gather_host_info() { |
|||
[ -z "${OS}" ] || return |
|||
|
|||
OS="$(${UNAME} -o)" |
|||
KERNEL="$(${UNAME} -s)" |
|||
VERSION="$(${UNAME} -r)" |
|||
PLATFORM="$(${UNAME} -m)" |
|||
HOSTNAME="$(${UNAME} -n)" |
|||
GNU="$([ "${OS%GNU*}" != ${OS} ] && echo "GNU")" |
|||
CLASSES="${OS}\n${GNU}\n${KERNEL}\n${VERSION}\n${PLATFORM}\n${HOSTNAME}" |
|||
CLASSES="$(${ECHO} -e "${CLASSES}" | ${SORT} -u | ${TR} "\n" " ")" |
|||
|
|||
export OS KERNEL VERSION PLATFORM HOSTNAME CLASSES |
|||
} |
|||
|
|||
# vim: set ts=4 sw=4: |
|||
@ -1,133 +1,17 @@ |
|||
#!/bin/dash |
|||
|
|||
## |
|||
# This creates function that will gather some system informations |
|||
# and propagate them as environment variables. |
|||
# |
|||
|
|||
. ./utils.sh |
|||
|
|||
## |
|||
# start guessing the system type via uname and export it. |
|||
# |
|||
get_host_info() { |
|||
OS="$(${UNAME} -o)" |
|||
KERNEL="$(${UNAME} -s)" |
|||
VERSION="$(${UNAME} -r)" |
|||
PLATFORM="$(${UNAME} -m)" |
|||
HOSTNAME="$(${UNAME} -n)" |
|||
CLASSES="$(${ECHO} -e "${OS}\n${KERNEL}\n${VERSION}\n${PLATFORM}\n${HOSTNAME}" |\ |
|||
${SORT} -u | ${TR} "\n" " ")" |
|||
include_once host_information.sh |
|||
include_once dist_information.sh |
|||
include_once cpu_information.sh |
|||
include_once interface_information.sh |
|||
|
|||
export OS KERNEL VERSION PLATFORM HOSTNAME CLASSES |
|||
gather_information() { |
|||
gather_host_info |
|||
gather_dist_info |
|||
gather_cpu_info |
|||
gather_interface_info |
|||
} |
|||
|
|||
## |
|||
# if we are on a linux try to figure out wich distribution we are |
|||
# running. |
|||
# First look what kind of realease file we have: |
|||
# |
|||
# 00 01 - Novell SuSE ---> /etc/SuSE-release |
|||
# 00 02 - Red Hat ---> /etc/redhat-release, /etc/redhat_version |
|||
# 00 04 - Fedora ---> /etc/fedora-release |
|||
# 00 08 - Slackware ---> /etc/slackware-release, /etc/slackware-version |
|||
# 00 10 - Debian ---> /etc/debian_release, /etc/debian_version |
|||
# 00 20 - Mandrake ---> /etc/mandrake-release |
|||
# 00 40 - Yellow dog ---> /etc/yellowdog-release |
|||
# 00 80 - Sun JDS ---> /etc/sun-release |
|||
# 01 00 - Solaris/Sparc ---> /etc/release |
|||
# 02 00 - Gentoo ---> /etc/gentoo-release |
|||
# |
|||
# Here I follow a pessimistic way because I prefere to have no |
|||
# identification at all over a wrong one...so I check for all these files. |
|||
# If I can't find any or find multiple of them I assume this system |
|||
# as unidentified. Anyway when I found one I still check the content... |
|||
# Here I need some help as I don't know the valid content of these files. |
|||
# For now I assume that at least the name of the distribution is in |
|||
# the file. |
|||
# |
|||
get_dist_info() { |
|||
[ -z "${KERNEL}" ] && get_host_info |
|||
|
|||
if [ "Linux" = "${KERNEL}" ] |
|||
then |
|||
local SUSE=1 |
|||
local REDHAT=2 |
|||
local FEDORA=4 |
|||
local SLACKWARE=8 |
|||
local DEBIAN=16 |
|||
local MANDRAKE=32 |
|||
local YELLOWDOG=64 |
|||
local SUNJDS=128 |
|||
local GENTOO=256 |
|||
local SOLARIS=512 |
|||
|
|||
local LAST=${SOLARIS} |
|||
|
|||
local CHK=$((SUSE|REDHAT|FEDORA|SLACKWARE|DEBIAN|MANDRAKE|\ |
|||
YELLOWDOG|SUNJDS|GENTOO|SOLARIS)) |
|||
|
|||
eval local FILES_${SUSE}=\'/etc/SuSE-release\' |
|||
eval local FILES_${REDHAT}=\'/etc/redhat-release /etc/redhat_version\' |
|||
eval local FILES_${FEDORA}=\'/etc/fedora-release\' |
|||
eval local FILES_${SLACKWARE}=\'/etc/slackware-release /etc/slackware-version\' |
|||
eval local FILES_${DEBIAN}=\'/etc/debian_release /etc/debian_version\' |
|||
eval local FILES_${MANDRAKE}=\'/etc/mandrake-release\' |
|||
eval local FILES_${YELLOWDOG}=\'/etc/yellowdog-release\' |
|||
eval local FILES_${SUNJDS}=\'/etc/sun-release\' |
|||
eval local FILES_${GENTOO}=\'/etc/gentoo-release\' |
|||
eval local FILES_${SOLARIS}=\'/etc/release\' |
|||
|
|||
local CUR=1 |
|||
while [ ${CUR} -le ${LAST} ] |
|||
do |
|||
local DIR |
|||
|
|||
eval local FILES=\"\${FILES_${CUR}}\" |
|||
|
|||
for DIR in ${FILES} |
|||
do |
|||
[ -f ${DIR} ] || CHK=$((CHK&~CUR)) |
|||
done |
|||
|
|||
CUR=$((CUR*2)) |
|||
done |
|||
|
|||
DIST="Unknown" |
|||
|
|||
[ ${CHK} -eq ${SUSE} ] && DIST="Suse" |
|||
[ ${CHK} -eq ${REDHAT} ] && DIST="Redhat" |
|||
[ ${CHK} -eq ${FEDORA} ] && DIST="Fedora" |
|||
[ ${CHK} -eq ${SLACKWARE} ] && DIST="Slakware" |
|||
[ ${CHK} -eq ${DEBIAN} ] && DIST="Debian" |
|||
[ ${CHK} -eq ${MANDRAKE} ] && DIST="Mandrake" |
|||
[ ${CHK} -eq ${YELLOWDOG} ] && DIST="Yellowdog" |
|||
[ ${CHK} -eq ${SUNJDS} ] && DIST="Sun" |
|||
[ ${CHK} -eq ${GENTOO} ] && DIST="Gentoo" |
|||
[ ${CHK} -eq ${SOLARIS} ] && DIST="Solaris" |
|||
|
|||
if [ 'Unknown' != "${DIST}" ] |
|||
then |
|||
eval ${GREP} -iq ${DIST} \${FILES_${CHK}} || DIST="Unknown" |
|||
fi |
|||
|
|||
CLASSES="${CLASSES}${DIST} " |
|||
else |
|||
DIST="${OS}" |
|||
fi |
|||
|
|||
export DIST CLASSES |
|||
} |
|||
|
|||
## |
|||
# autorun this if sourced. |
|||
# |
|||
|
|||
[ -z "${DIST}" ] && get_dist_info |
|||
|
|||
case "${OS}" in |
|||
GNU/*) |
|||
include_once gnu_information.sh;; |
|||
esac |
|||
|
|||
# vim: set ts=4 sw=4: |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue