Tabla de Contenidos

Dump some hardware info in DokuWiki format

Script (sys2wiki.sh) um Hardware Infos unter linux in DokuWiki kompatible format auszulesen.

#!/bin/bash

#make sure tools work as expected
LANG=C

#this specifies which Headline level is used
HL='===='

CPU=`cat /proc/cpuinfo  | grep 'model name' | awk -F\: '{print $2}'| uniq | sed -e 's/ //'`
MHz=`cat /proc/cpuinfo | grep 'cpu MHz' | awk -F\: '{print $2}'| uniq | sed -e 's/ //'`
CPUCOUNT=`cat /proc/cpuinfo | grep ^processor | wc -l`
RAM=`cat /proc/meminfo | grep MemTotal | awk -F\: '{print $2}' | awk -F\  '{print $1 " " $2}'`
SWAP=`cat /proc/meminfo | grep SwapTotal | awk -F\: '{print $2}' | awk -F\  '{print $1 " " $2}'`
SYSTEM=`uname -sr`
HOSTNAME=`(hostname -f || hostname) 2>/dev/null`

# look for known Distributions
if [ -e /etc/debian_version ]; then
  OS="Debian `cat /etc/debian_version`"
elif [ -e /etc/redhat-release ]; then
  OS=`cat /etc/redhat-release`
elif [ -e /etc/SuSE-release ]; then
  OS=`cat /etc/SuSE-release |head -n1`
elif [ -e /etc/gentoo-release ]; then
  OS=`< /etc/gentoo-release`
elif [ -e /etc/slackware-version ]; then
  OS=`< /etc/slackware-version`
 else
  OS='unknown'
fi

echo "
$HL General $HL

^ Hostname | $HOSTNAME |
^ CPU      | $CPU      |
^ MHz      | $MHz      |
^ # CPU    | $CPUCOUNT |
^ RAM      | $RAM      |
^ Swap     | $SWAP     |
^ System   | $SYSTEM   |
^ OS       | $OS       |
"

echo -e "$HL Network $HL\n"
for DEV in `/sbin/ifconfig -a | grep '^\w'| awk '!/lo/{print $1}'`
do
  IP=`/sbin/ifconfig $DEV | awk -F\: '/inet / {print $2}'| awk '{print $1}'`
  echo "^ $DEV | $IP |"
done
echo

echo -e "$HL PCI $HL\n"
#lspci |sed 's/^/  /'
echo "^  Bus Address  ^  Device Class  ^  Details  ^"
/sbin/lspci |sed 's/\([0-9]\{2\}:[0-9a-z]\{2\}.[0-9]\)\([a-zA-Z0-9() ]\+\):\(.*\)$/|  \1  | \2  |  \3  |/g'
echo

echo -e "$HL Filesystems $HL\n"
df -hPT -x tmpfs | awk '{print "| " $1 " | " $2 " | " $3 " | " $7 " |"}'
echo

echo -e "$HL IDE devices $HL\n"

for DEV in `ls -1d /proc/ide/hd* | sed 's/.*\///'`
do
  MODEL=`cat /proc/ide/$DEV/model`
  if [ -e /proc/ide/$DEV/capacity ]; then
    SIZE=`cat /proc/ide/$DEV/capacity`
    SIZE=`expr $SIZE / 2097152`
  else
    if [ -e /sys/block/$DEV/size ]; then
      SIZE=`cat /sys/block/$DEV/size`
      SIZE=`expr $SIZE / 2097152`
    else
      SIZE='(unknown)'
    fi
  fi

  echo "| /dev/$DEV | $MODEL | $SIZE GB |"
done

if [ "$(ls -1d /sys/block/sd* 2> /dev/null)" ]; then
  echo -e "$HL SCSI devices $HL\n"
  for DEV in `ls -1d /sys/block/sd* |sed 's/.*\///'`
  do
    MODEL=`cat /sys/block/$DEV/device/model`
    SIZE=`cat /sys/block/$DEV/size`
    SIZE=`expr $SIZE / 2097152`

    echo "| /dev/$DEV | $MODEL | $SIZE GB |"
  done
  echo
fi

Hardware Infos unter AIX (getestet unter AIX 5.1)

#!/bin/ksh

#make sure tools work as expected
LANG=C

#this specifies which Headline level is used
HL='===='

#CPU
CPU_NAME=$(/usr/sbin/lsdev -C | grep Available | grep -i proc | awk '{print $1}')
CPU=`/usr/sbin/lsattr -l $CPU_NAME -E | grep type | awk '{print $2}'`

#MHz
MHz=`/usr/sbin/lsattr -l $CPU_NAME -E | grep frequency | awk '{print $2/1000000}'`
CPUCOUNT=`/usr/sbin/lsdev -C | grep Available | grep -i proc | awk '{print $1}' | wc -l`

#RAM
MEM_NAME=$(/usr/sbin/lsdev -C | grep Available | grep -i mem | awk '{print $1}')
RAM=`/usr/sbin/lsattr -l $MEM_NAME -E | grep Total | awk '{print $2}'`
# SWAP
SWAP=0
for i in $(/usr/sbin/lsvg -o)
 do
	if lsvg -l $i | grep paging 2>&1 1>/dev/null
	 then
		PAGEDEV=$(lsvg -l $i | grep paging | awk '{print $1}')
		PP_SIZE=$(lslv $PAGEDEV | grep "PP SIZE" | awk '{print $6}')
		LP_COUNT=$(lslv $PAGEDEV | grep "^LPs" | awk '{print $2}')
		let SWAP=$SWAP+$PP_SIZE*$LP_COUNT
	fi
done
OS=`printf "$(/usr/bin/uname) $(/usr/bin/oslevel)"` # erledigt
ML=`/usr/bin/oslevel -r | awk -F- '{print $2}'`
HOSTNAME=`/usr/bin/hostname`

echo "
$HL General $HL

^ Hostname | $HOSTNAME |
^ CPU      | $CPU      |
^ MHz      | $MHz      |
^ # CPU    | $CPUCOUNT |
^ RAM      | $RAM      |
^ Swap     | $SWAP     |
^ OS       | $OS       |
^ Maintenance-Level       | $ML       |
"

echo "$HL Network $HL\n"
for DEV in `/usr/sbin/ifconfig -a | egrep -v "^lo|inet|ether|sendspace" | awk '{print $1}' | sed -e 's/://' | uniq`
do
  IP=`/usr/sbin/ifconfig $DEV | grep inet | awk '{print $2}'`
  echo "^ $DEV | $IP |"
done
echo

echo "$HL Devices $HL\n"
echo "^  Name  ^  Slot  ^  Description  ^"
/usr/sbin/lsdev -C -S Available -F "name location description" |sort | sed -e '/^[ ]*$/d' | awk -F' \{2,\}' '{print "| " $1 " | " $2 " | " $3 " |"}'
echo

echo "$HL Volumegroups & Filesystems $HL\n"
echo "^ Volumegroup ^ Filesystem ^ Size (in KB) ^ Mountpoint ^"
for i in $(/usr/sbin/lsvg -o)
 do
	for j in $(lsvg -l $i | egrep -v "$i:|TYPE|closed|paging|jfslog|jfs2log" | awk '{print $1}')
	 do
		echo "| $i $(df -k | grep "$j " | awk '{print "| " $1 " | " $2 " | " $NF " |"}')"
	done
done
echo

Hardware Infos unter Solaris (getestet unter Solaris 9/10 SPARC)

#!/bin/bash

#make sure tools work as expected
LANG=C

#this specifies which Headline level is used
HL='===='

CPU=`/usr/bin/kstat cpu_info | grep implementation | sed -e 's/\([^ *]implementation[ *]\)//g' | sed -e 's/[ ]\{2,\}//g' |  sed -n '1p'` # erledigt
MHz=`/usr/bin/kstat cpu_info | grep clock_MHz | sed -e 's/\([^ *]clock_MHz[ *]\)//g' | sed -e 's/[ ]\{2,\}//g' | sed -n '1p'` # erledigt
CPUCOUNT=`/usr/bin/kstat cpu_info | grep implementation | wc -l` # erledigt
RAM=`/usr/sbin/prtconf | grep Memory | awk '{print $3*1024}'` # erledigt
SWAP=`SWAP=0; for i in $(/usr/sbin/swap -l | egrep -v swapfile | awk '{print $5}'); do let SWAP=$SWAP+$i; done; echo $SWAP` # erledigt
OS=`uname -sr` # erledigt
HOSTNAME=`/usr/bin/hostname`

echo "
$HL General $HL

^ Hostname | $HOSTNAME |
^ CPU      | $CPU      |
^ MHz      | $MHz      |
^ # CPU    | $CPUCOUNT |
^ RAM      | $RAM      |
^ Swap     | $SWAP     |
^ OS       | $OS       |
"

echo -e "$HL Network $HL\n"
for DEV in `/usr/sbin/ifconfig -a | egrep -v "^lo|inet|ether" | awk '{print $1}' | sed -e 's/://' | uniq`
do
  IP=`/sbin/ifconfig $DEV | grep inet | awk '{print $2}'`
  echo "^ $DEV | $IP |"
done
echo

echo -e "$HL Bus $HL\n"
echo "^  Board  ^  Bus-Type  ^  MHz  ^  Slot  ^  Name  ^  Model  ^"
/usr/sbin/prtdiag | sed -n -e '/^     Bus/,/======/ p' | egrep -v "Freq|---|System|===|Slot" | sed -e '/^[ ]*$/d' | awk -F' \{2,\}' '{print "| " $1 " | " $2 " | " $3 " | " $4 " | " $5 " | " $NF " |"}'
echo

echo -e "$HL Filesystems $HL\n"
/usr/bin/df -h | egrep -v "/proc|mnttab|/dev/fd|swap|/devices|ctfs|objfs" | awk '{print "| " $1 " | " $2 " | " $6 " |"}'
echo

Beispiel

Kann man z.B wie folgt aufrufen

fw-failover-2 tmp # ./sys2wiki.sh > fw-failover-2.txt

und das ganze sieht dan so aus


General

Hostname fw-failover-2.mustermann.lan
CPU Intel(R) Pentium(R) 4 CPU 2.80GHz
MHz 2800.662
# CPU 1
RAM 510068 kB
Swap 1000312 kB
System Linux 2.6.14-hardened-r5
OS Gentoo Base System version 1.6.14

Network

eth0 192.168.10.241
eth0:0 192.168.10.4
eth1 212.xx.xxx.xxx
eth2 192.168.100.1
eth3 212.xx.xxx.xx
ippp0 192.168.200.100
ippp1 192.168.0.153
ippp2 192.168.5.100
ipsec0 212.xx.xxx.xx
ipsec1 212.xx.xxx.xxx

PCI

Bus Address Device Class Details
00:00.0 Host bridge Intel Corporation 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 03)
00:01.0 PCI bridge Intel Corporation 82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge (rev 03)
00:1d.0 USB Controller Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge Intel Corporation 82801 PCI Bridge (rev 82)
00:1f.0 ISA bridge Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface Intel Corporation 82801DB (ICH4) IDE Controller (rev 02)
00:1f.3 SMBus Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 02)
01:00.0 VGA compatible controller nVidia Corporation NV11 [GeForce2 MX/MX 400] (rev b2)
02:05.0 Ethernet controller Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:09.0 Ethernet controller 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:0b.0 Ethernet controller 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:0c.0 Ethernet controller 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:0d.0 Ethernet controller 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:0e.0 Network controller AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 02)

Filesystems

Filesystem Type Size Mounted
/dev/md/1 reiserfs 1.9G /
/dev/md/0 reiserfs 96M /boot
/dev/md/2 reiserfs 2.4G /usr
/dev/md/4 reiserfs 3.8G /var
/dev/drbd0 reiserfs 9.6G /shared

IDE devices

/dev/hda WDC WD400BB-00JHA0 37 GB
/dev/hdc ST320413A 18 GB
/dev/hdd TSSTcorpDVD-ROM SH-D162C 0 GB

Originalscript zu finden unter http://wiki.splitbrain.org/sys2wiki.sh
Denn “lspci” ausgabe abschnitt habe ich bischen angepasst.

Die Ausgabe für den Bereich AIX & Solaris sieht entsprechend der unterschiedlichen Systemarchitektur und Betriebssystemmittel anders aus als der Linux-Bereich. Der Aufruf und die Verarbeitung funktioniert aber analog.

Original

Extraido de http://www.nagios-wiki.de/nagios/howtos/wiki_hardware