#! /bin/sh
# testet viele Systemdaten des c't/ODS-Schulservers "Arktur"
# Helmut Hullen, Januar 2005
# Nutzung gemss der GNU Public License

# $Id: arkturtest,v 1.6 2006-02-24 10:58:41+01 HHullen Exp $
# $Log: arkturtest,v $
# Revision 1.6  2006-02-24 10:58:41+01  HHullen
# IMAP ergnzt
#
# Revision 1.5  2005/07/26 18:59:56  HHullen
# sendmail eingebaut
#
# Revision 1.5  2005/01/10 21:06:09  HHullen
# Laufwerke ergnzt
#
# Revision 1.4  2005/01/10 20:10:02  HHullen
# einheitlicher Kopf
#
# Revision 1.3  2005/01/10 19:18:01  HHullen
# einige Ergnzungen
#
# Revision 1.2  2005/01/09 16:03:57  HHullen
# erste Eintrge
#
# Revision 1.1  2005/01/09 14:19:59  HHullen
# Start
#

Kopf () {
	local Zeile
	Zeile="$* ============================="
	echo "
	============== ${Zeile::30}" >> $Ziel

}

Ziel=/home/tmp/Arktest.txt
mkdir -p $(dirname $Ziel)

rm -f $Ziel
Kopf $(hostname -f)
chmod 666 $Ziel	# damit es auch unter Windows bearbeitet werden kann

date >> $Ziel
uname -a >> $Ziel
echo "Arktur Version $(</usr/lib/ods-server/version)" >> $Ziel

Kopf System
echo "$(df)

$(mount)" >> $Ziel

Kopf "installierte Pakete"
ls -A1 /var/adm/packages >> $Ziel
test -s /etc/rc.config && source /etc/rc.config

# Arktur 3.5 und 4.0: andere Dateien
test -s /etc/Systemverwaltung/dienste,v && 
	Dienste=$(co -p -q /etc/Systemverwaltung/dienste)

# Samba
test "$START_SAMBA" = "yes" -o "$(echo "$Dienste" | grep samba)" && {
Kopf "Samba"
echo "$(nmbd -V)
PIDs:
nmbd $(pidof nmbd)
smbd $(pidof smbd)

smb.conf 
$(testparm -s 2>&1)

$(smbclient -N -L Arktur 2>&1)" >> $Ziel

# pdbedit; Benutzer 
}

Kopf "User und Gruppen"
pwck -r >> $Ziel
grpck -r >> $Ziel

# named

test "$START_NAMED" = "yes" -o "$(echo "$Dienste" | grep named)"  && {
Kopf named
echo "PID des named ist $(pidof named)" >> $Ziel

}
#

# logrotate

test -x $(which logrotate) && {

Kopf logrotate
echo "...
$(logrotate -d /etc/logrotate.conf 2>&1 | tail)" >> $Ziel 
}

# Prozesse
# u.a. wegen "root kit"
Kopf Prozesse
ps -A >> $Ziel

# squid
test "$START_SQUID" = "yes"  -o "$(echo "$Dienste" | grep squid)" && {
Kopf Squid
Squid=$(locate bin/squid | grep squid$ | grep ^/usr)
test -x "$Squid" && {
echo "Version $($Squid -v)
PID $(pidof squid)
$($Squid -k debug -X 2>&1)" >> $Ziel ; }
}

# Apache
test "$START_WWW" = "yes" -o "$(echo "$Dienste" | grep apache)"  && {
# stimmt der Dienst fr Arktur 4.0?
Kopf "Apache"
echo "Version $(httpd -v)
PID $(pidof httpd)
$(httpd -t 2>&1)" >> $Ziel
}

# Sendmail
Kopf Sendmail
sendmail -d0.11 < /dev/null >> $Ziel

# Netzwerkkarten

Kopf Netzwerk
echo "$(co -p -q /etc/Systemverwaltung/ether)

$(ifconfig)

$(lspci | grep -i Ethernet)" >> $Ziel 

# FTP
Kopf "FTP-Server"
echo "$(nc -q1 localhost 21 < /dev/null 2>&1)" >> $Ziel

# POP3
Kopf "POP3-Server"
echo "$(nc -q1 localhost 110 < /dev/null 2>&1)" >> $Ziel

# IMAP
Kopf "IMAP-Server"
echo "$(nc -q1 localhost 143 < /dev/null 2>&1)" >> $Ziel

# INN
Kopf "INN-Server"
echo "$(nc -q1 localhost 119 < /dev/null 2>&1)" >> $Ziel

# SSH
Kopf "SSH"  
echo "Version $(ssh -V 2>&1)" >> $Ziel
test "$(pidof sshd)" && {
echo "$(nc -q1 localhost 22 < /dev/null)" >> $Ziel
}

# Laufwerke
Kopf Laufwerke
grep "^ [hs]d" /var/log/boot.msg | while read Device Rest
  do
	Lw=$(echo $Device | tr -d :)
	hdparm /dev/$Lw >> $Ziel
	test -x $(which smartctl) && 
		case $Lw in
		hd*)
		smartctl -i /dev/$Lw >> $Ziel
		;;
		sd*)
#		smartctl -i -d scsi -T permissive /dev/$Lw >> $Ziel
		# hakt bei USB-Gerten
		;;
		esac
  done


#
