From: Michael Prokop Date: Sat, 11 Nov 2006 18:12:21 +0000 (+0100) Subject: initial checkin X-Git-Tag: 0.3-2~2 X-Git-Url: http://git.grml.org/?p=grml-hwinfo.git;a=commitdiff_plain;h=89b71f0a569a8347159a5a8a434ac9ad3c9e637f initial checkin --- 89b71f0a569a8347159a5a8a434ac9ad3c9e637f diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..628a9cf --- /dev/null +++ b/debian/README.Debian @@ -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 , Thu, 28 Jul 2005 08:50:04 +0200 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..d7b41b8 --- /dev/null +++ b/debian/changelog @@ -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 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 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 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 Mon, 3 Apr 2006 22:23:31 +0200 + +grml-hwinfo (0.1-1) unstable; urgency=low + + * Initial release. + + -- Michael Prokop Thu, 28 Jul 2005 08:50:04 +0200 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..4c32976 --- /dev/null +++ b/debian/control @@ -0,0 +1,18 @@ +Source: grml-hwinfo +Section: grml +Priority: optional +Maintainer: Michael Prokop +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 index 0000000..d159fb4 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,27 @@ +This package was debianized by Michael Prokop on +Thu, 28 Jul 2005 08:50:04 +0200. + +It was downloaded from http://grml.org/ + +Copyright Holder: Michael Prokop + +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 index 0000000..e772481 --- /dev/null +++ b/debian/dirs @@ -0,0 +1 @@ +usr/bin diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..e69de29 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..37df8fc --- /dev/null +++ b/debian/rules @@ -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 index 0000000..b30976c --- /dev/null +++ b/grml-hwinfo @@ -0,0 +1,197 @@ +#!/bin/sh +# Filename: grml-hwinfo +# Purpose: get hardware information +# Authors: grml-team (grml.org), (c) Michael Prokop +# 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 +################################################################################ + +# 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 ." +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 " +#echo "" +# +#cat < +#Manufacturer: +#Model: +#Distributor: +#Bought in: +# +#Components/Options: +# +#Additional Notes: +# +#EOF + +## END OF FILE################################################################## diff --git a/grml-hwinfo.1 b/grml-hwinfo.1 new file mode 100644 index 0000000..ed76fba --- /dev/null +++ b/grml-hwinfo.1 @@ -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 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\fP and +.\" \fI\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 . +.PP +This manual page was written by Michael Prokop , +for the Debian project (but may be used by others). diff --git a/sysdump b/sysdump new file mode 100755 index 0000000..1fd3e0e --- /dev/null +++ b/sysdump @@ -0,0 +1,90 @@ +#!/usr/bin/perl +# +# sysdump - dump /sys to a textformat +# +# Copyright 2005 David Schmitt +# +# 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 = ; + $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); +