initial checkin
authorMichael Prokop <mika@grml.org>
Sat, 11 Nov 2006 18:12:21 +0000 (19:12 +0100)
committerMichael Prokop <mika@grml.org>
Sat, 11 Nov 2006 18:12:21 +0000 (19:12 +0100)
debian/README.Debian [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
grml-hwinfo [new file with mode: 0755]
grml-hwinfo.1 [new file with mode: 0644]
sysdump [new file with mode: 0755]

diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..628a9cf
--- /dev/null
@@ -0,0 +1,8 @@
+grml-hwinfo for Debian
+----------------------
+
+Notice that dependencies are minimal so it's possible to use
+grml-hwinfo also with a very minimalistic setup. Just install all
+suggests/recommends to get a full featured grml-hwinfo.
+
+ -- Michael Prokop <mika@grml.org>, Thu, 28 Jul 2005 08:50:04 +0200
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..d7b41b8
--- /dev/null
@@ -0,0 +1,36 @@
+grml-hwinfo (0.3-1) unstable; urgency=low
+
+  * Fix: append output of for-loop to files (avoids possible
+    overwriting of files).
+
+ -- Michael Prokop <mika@grml.org>  Thu, 10 Aug 2006 00:17:59 +0200
+
+grml-hwinfo (0.2-3) unstable; urgency=low
+
+  * Send errors from sfdisk and fdisk to an error file as
+    unpartitioned disks report errors.
+  * It's linux-image-... and not kernel-image... anymore.
+
+ -- Michael Prokop <mika@grml.org>  Thu,  6 Apr 2006 16:04:51 +0200
+
+grml-hwinfo (0.2-2) unstable; urgency=low
+
+  * Check for existence of /proc/ide/ide?/hd?/geometry before
+    grepping.
+
+ -- Michael Prokop <mika@grml.org>  Tue,  4 Apr 2006 23:41:04 +0200
+
+grml-hwinfo (0.2-1) unstable; urgency=low
+
+  * Fixed the "not running as root" problem.
+  * Send error/warning output of sysdump to sysdump.error.
+  * Changed pcmcia-cs in Suggested: to pcmcia-utils.
+
+ -- Michael Prokop <mika@grml.org>  Mon,  3 Apr 2006 22:23:31 +0200
+
+grml-hwinfo (0.1-1) unstable; urgency=low
+
+  * Initial release.
+
+ -- Michael Prokop <mika@grml.org>  Thu, 28 Jul 2005 08:50:04 +0200
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b8626c4
--- /dev/null
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..4c32976
--- /dev/null
@@ -0,0 +1,18 @@
+Source: grml-hwinfo
+Section: grml
+Priority: optional
+Maintainer: Michael Prokop <mika@grml.org>
+Build-Depends: debhelper (>= 4.0.0)
+Standards-Version: 3.6.2
+
+Package: grml-hwinfo
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, sysfsutils
+Suggests: hwinfo, usbutils, pcmcia-utils, net-tools, iproute, powermgmt-base, acpi, xviddetect, xbase-clients, xresprobe, dmidecode, hdparm, parted-bf, smartmontools,
+Conflicts: grml-scripts (<= 0.4-15)
+Description: collect hardware information
+ This tool collects information regarding hardware.  It can be
+ run as normal user to collect some basic information or with
+ root permissions to collect as much information as possible. A
+ file named info.tar.bz2 will be created in the current directory
+ where all information is collected.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..d159fb4
--- /dev/null
@@ -0,0 +1,27 @@
+This package was debianized by Michael Prokop <mika@grml.org> on
+Thu, 28 Jul 2005 08:50:04 +0200.
+
+It was downloaded from http://grml.org/
+
+Copyright Holder: Michael Prokop <mika@grml.org>
+
+License:
+
+   This software is copyright (c) 2004-2005 by Michael Prokop.
+
+   This package 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; version 2 dated June, 1991.
+
+   This package 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 package; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..e772481
--- /dev/null
@@ -0,0 +1 @@
+usr/bin
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..37df8fc
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+
+build-stamp:
+       dh_testdir
+
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/grml-hwinfo.
+       install -m 755 grml-hwinfo $(CURDIR)/debian/grml-hwinfo/usr/bin/
+       install -m 755 sysdump     $(CURDIR)/debian/grml-hwinfo/usr/bin/
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installman grml-hwinfo.1
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/grml-hwinfo b/grml-hwinfo
new file mode 100755 (executable)
index 0000000..b30976c
--- /dev/null
@@ -0,0 +1,197 @@
+#!/bin/sh
+# Filename:      grml-hwinfo
+# Purpose:       get hardware information
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Don Aug 10 00:17:56 CEST 2006 [mika]
+################################################################################
+# Notice: Some ideas have been taken from
+# http://club.black.co.at/david/hwdb/infodump
+# by David Schmitt <david@schmitt.edv-bus.at>
+################################################################################
+
+# variables
+UNAME=$(uname -r)
+PN=$(basename $0)
+VERSION='0.2'
+if [[ -z "$INFOFILE" ]]; then
+  INFOFILE='info.tar.bz2'
+fi
+
+# echo a list of all disks and their size
+# taken from http://cvs.debian.org/fai/lib/disk-info
+function diskandsize() {
+    local isdisk major minor blocks device suffix
+    while read major minor blocks device suffix; do
+        isdisk=1
+        # skip ide cdrom
+        [ -f /proc/ide/$device/media ] && grep -q cdrom /proc/ide/$device/media && isdisk=0
+        [ $isdisk -eq 1 ] && echo "$device $blocks"
+    done
+}
+
+function list_disks() {
+# print only every second entry; used by disk_info
+i=0
+for ent in $@; do
+    if [ $i -eq 0 ]; then
+        echo $ent
+        i=1
+    else
+        i=0
+    fi
+done
+}
+
+function disk_info() {
+    # the variable holds a space separated list of devices and their block size
+    device_size=`grep -E ' cciss/c.d.$| ida/c.d.$| rd/c.d.$| hd.$| sd.$|/disc$' /proc/partitions | diskandsize`
+# grep -E ' cciss/c.d.\b| ida/c.d.\b| rd/c.d.\b| hd.\b| sd.\b|/disc\b' /proc/partitions | diskandsize
+
+    # a list of all local disks, without size
+    disklist=`list_disks $device_size`
+}
+
+echo "Running grml-hwinfo ${VERSION} - collecting hardware information."
+echo "Please send feedback, bugreports, feature requests to Michael Prokop <mika@grml.org>."
+echo ""
+
+mkdir info || exit -1
+(
+  cd info
+
+  echo "Generating hardware information report using file $INFOFILE."
+  echo "This might take a few seconds/minutes. Please be patient..."
+
+# some sysinfo
+  date > date
+  if [ -r /etc/grml_version ] ; then
+    cat /etc/grml_version > grml_version
+  else
+    echo "This does not seem to be a grml system. Continuing anyway..."
+  fi
+  cat /etc/debian_version > debian_version
+  uname -a > uname
+
+# disks / devices
+  [ -f /proc/scsi/scsi ] && cat /proc/scsi/scsi > scsi
+  (lspci; lspci -n) | sort > lspci
+  [ -r /proc/bus/pnp ] && lspnp > lspnp
+  [ -r /proc/bus/usb ] && lsusb > lsusb
+  cat /proc/partitions > partitions
+  [ -r /proc/ide/ide?/hd?/geometry ] && grep . /proc/ide/ide?/hd?/geometry /dev/null | sed -e 's#/proc/ide/ide./##' > proc_ide
+  df -h > df 2>/dev/null
+  for i in free lsmod mount lsdev ; do
+    $i > $i
+  done
+
+# proc stuff
+  for i in cpuinfo interrupts cmdline devices dma fb iomem ioports \
+    mdstat meminfo modules mtrr pci version ; do
+    [ -r /proc/$i ] && cat /proc/$i > proc_$i
+  done
+  [[ -x `which sysdump` ]] && sysdump > sysdump 2>sysdump.error
+# for sysnet in `find /proc/sys/net/*/ -type f | grep -v flush`; do cat $sysnet >> sysnet ; done
+
+# log
+  dmesg > dmesg.cur
+
+# hwinfo
+  [[ -x `which discover` ]] && discover -v --type-summary --enable-bus all > discover 2> discover.2
+  [[ -x `which hwinfo` ]] && hwinfo log=hwinfo
+
+# net stuff
+  [[ -x `which ifconfig` ]] && ifconfig -v -a  > ifconfig
+  [[ -x `which ip` ]] && ip route show   > ip_route
+  [[ -x `which ip` ]] && ip link show    > ip_link
+  [[ -x `which route` ]] && route -n        > route
+
+# software
+  dpkg --get-selections   > dpkg_get_selections
+  COLUMNS=300 dpkg --list > dpkg_list
+  COLUMNS=1000 dpkg -l linux-image-$UNAME | grep linux-image-$UNAME | tr -s ' ' > running_kernel
+
+# powermanagement
+  [[ -x `which laptop-detect` ]] && laptop-detect 1>/dev/null 2>/dev/null && echo "0" > laptop_detected
+  [[ -x `which acpi_available` ]] && acpi_available && cat /proc/acpi/info > acpi_info
+  [[ -x `which acpi` ]] && acpi > acpi 2> acpi.error && acpi -v > acpi.version
+  [ -r /proc/apm/  ]  && apm > acpi
+
+# kernel stuff
+  if [ -r /proc/config.gz ] ; then
+    zcat /proc/config.gz > kernelconfig
+  else
+    [ -r /boot/config-$UNAME ] && cat /boot/config-$UNAME > kernelconfig
+  fi
+
+# X stuff
+  if [ -n "${DISPLAY}" ] ; then
+    [[ -x `which xviddetect` ]] && xviddetect         > xviddetect
+    [[ -x `which xvidtune`   ]] && xvidtune -show     > xdivtune
+    [[ -x `which xrandr`     ]] && xrandr             > xrandr
+    [[ -x `which xdpyinfo`   ]] && xdpyinfo           > xdpyinfo
+    X -version        1> x_version 2>&1
+  fi
+
+  for i in Xorg.0.log Xorg.7.log Xorg.8.log XFree86.0.log XFree86.7.log XFree86.8.log dmesg ; do
+    cp /var/log/$i log_$i 2>/dev/null
+  done
+
+  cp /etc/X11/xorg.conf    xorg.conf    2>/dev/null
+  cp /etc/modules          modules      2>/dev/null
+  cp /etc/X11/XF86Config-4 XF86Config-4 2>/dev/null
+
+# not available:
+# sysinfo -class device -level all
+
+# as root:
+if [ $UID != 0 ] ; then
+  echo "not running as root" > root
+  NOTROOT="yes"
+else
+  echo "running as root" > root
+  disk_info
+  [[ -x `which sfdisk`    ]] && sfdisk -d > sfdisk 2>sfdisk.error
+  [[ -x `which ddcprobe`  ]] && ddcprobe  > ddcprobe
+  [[ -x `which dmidecode` ]] && dmidecode > dmidecode
+  for disk in $disklist; do
+     [[ -x `which smartctl` ]] && smartctl -i /dev/$disk >> smartctl
+     [[ -x `which hdparm`   ]] && hdparm -iv /dev/$disk  >> hdparm
+     [[ -x `which fdisk`    ]] && fdisk -lu /dev/$disk   >> fdisk 2>>fdisk.error
+     [[ -x `which parted`   ]] && parted -s /dev/$disk print >> parted
+     LC_ALL=C file -s /dev/$disk?* | grep -v ": empty" >> file_disk
+  done
+fi
+)
+
+tar jcf $INFOFILE info/ && rm -Rf info/
+
+echo ""
+[ -n "$NOTROOT" ]  && echo "Notice: you are running $PN without root permissions! Not all information could be collected!"
+echo ""
+[ -r "$INFOFILE" ] && echo "$INFOFILE ($(ls -ahl $INFOFILE | awk '{print $5}')) has been generated."
+echo ""
+
+#echo ""
+#echo 'Thanks for collecting this information!'
+#echo ""
+#echo "Please fill out this form and send it together with $INFOFILE ($(ls -ahl $INFOFILE | awk '{print $5}')) to"
+#echo "  Michael Prokop <mika@grml.org>"
+#echo ""
+#
+#cat <<EOF
+#Class: <Laptop/Desktop/Server/built-to-order/self-assembled>
+#Manufacturer:
+#Model:
+#Distributor: <Where did you buy it>
+#Bought in: <Country and Date>
+#
+#Components/Options: <If the PC was built-to-order or self assembled, please
+#        list the options or components you used>
+#
+#Additional Notes:
+#
+#EOF
+
+## END OF FILE##################################################################
diff --git a/grml-hwinfo.1 b/grml-hwinfo.1
new file mode 100644 (file)
index 0000000..ed76fba
--- /dev/null
@@ -0,0 +1,41 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GRML-HWINFO 1 "Juli 28, 2005"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+grml-hwinfo \- collect hardware information
+.SH SYNOPSIS
+.B grml-hwinfo
+.SH DESCRIPTION
+This manual page documents briefly the
+.B grml-hwinfo
+command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBgrml-hwinfo\fP is a program that collects information regarding hardware.
+.SH OPTIONS
+This program does not support any options. Either run it as normal user to collect some basic
+information or run it with root permissions to collect as much information as possible. Temporary files
+will be written to a directory namend info in current directory, a file namend info.tar.bz2 will be
+generated. Set environment variable INFOFILE if you want to use different name for infofile, e.g. run
+grml-hwinfo via 'INFOFILE=foobar.tar.bz2 grml-hwinfo' to generate the report in the file foobar.tar.bz2.
+.SH AUTHOR
+grml-hwinfo was written by Michael Prokop <mika@grml.org>.
+.PP
+This manual page was written by Michael Prokop <mika@grml.org>,
+for the Debian project (but may be used by others).
diff --git a/sysdump b/sysdump
new file mode 100755 (executable)
index 0000000..1fd3e0e
--- /dev/null
+++ b/sysdump
@@ -0,0 +1,90 @@
+#!/usr/bin/perl
+#
+#    sysdump - dump /sys to a textformat
+#
+#    Copyright 2005 David Schmitt <david@schmitt.edv-bus.at>
+#
+#    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 2 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, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#      Version 0.1: Initial prototype
+#
+
+use warnings;
+use strict;
+
+$| = 1;
+
+#my $basedir = `systool -m`;
+#chomp $basedir;
+my $basedir = '/sys';
+
+sub dump_dir($$)
+{
+       my $level = shift;
+       my $dir = shift;
+
+       opendir(DIR, $dir) || die "can't opendir $dir: $!";
+       my @entries = grep { !/^\.\.?/ } readdir(DIR);
+       closedir(DIR);
+
+       #print " "x$level;
+       print $dir, ":\n";
+
+       foreach my $entry (sort @entries)
+       {
+               dump_entry($level + 1, "$dir/$entry");
+       }
+}
+
+sub dump_link($$)
+{
+       my $level = shift;
+       my $link = shift;
+
+       #print " "x$level;
+       print $link, " -> ", readlink($link), "\n";
+}
+
+sub dump_value($$)
+{
+       my $level = shift;
+       my $file = shift;
+
+       open (FILE, "<$file") || die "can't open $file: $!";
+
+       my $value;
+       {       local $/;
+               $value = <FILE>;
+               $value = defined($value)?$value:"undef";
+       }
+       chomp $value;
+       close FILE;
+
+       #print " "x$level;
+       print $file, " = '", $value, "'\n";
+}
+
+sub dump_entry($$)
+{
+       my $level = shift;
+       my $file = shift;
+
+       return dump_link($level, $file) if -l $file;
+       return dump_dir($level, $file) if -d $file;
+       return dump_value($level, $file) if -r $file;
+}
+
+dump_dir(0, $basedir);
+