#-*-shell-script-*- function verbose-message () { echo "" echo $(date "+%H:%M:%S") " ==================== " "$@" } function verbose-run () { echo $(date "+%H:%M:%S") " ========== running" "$@" "$@" echo $(date "+%H:%M:%S") " ==========" "$@" "returned with retcod=$?" } function verbose-file() { file=$1; shift echo "$file" if ! [ -f "$file" ]; then verbose-message "!!!!!!!!!! missing $file" else verbose-run cat $file fi } function verbose-file-uncommented-patterns () { file=$1; shift egrep_pattern=$2; shift if ! [ -f "$file" ]; then verbose-message "!!!!!!!!!! missing $file" else echo '---------- egrep $egrep_pattern' $file grep -v '^#' $file | egrep "$egrep_pattern" fi } function verbose-forensics () { message="$1"; shift verbose-message "BEG FORENSICS -- $message" verbose-run dmesg verbose-run lsmod verbose-run lspci # XXX : need to check for a running udev for file in /etc/resolv.conf /run/resolvconf/resolv.conf /etc/sysconfig/network-scripts/ifcfg-eth*; do verbose-file $file done verbose-message Configured interfaces verbose-run ls -l /sys/class/net/ verbose-run cat /proc/net/dev verbose-run ip address show verbose-run ip link show verbose-message Routing table verbose-run ip route show BOOT_FILE=/usr/boot/boot_server BOOT_SERVER=$(cat $BOOT_FILE) verbose-message Pinging boot server $BOOT_SERVER "(" from file $BOOT_FILE ")" verbose-run ping -c 4 -w 4 $BOOT_SERVER verbose-message Pinging google public DNS verbose-run ping -c 1 -w 5 8.8.8.8 # try to resolve this hostname as that's the one used for ntp dnss=$(grep '^nameserver' /etc/resolv.conf 2>/dev/null | awk '{print $2;}') if [ -z "$dnss" ] ; then # not too helpful, but.. verbose-message "!!!" No server found in /etc/resolv.conf - Resolving hostname at the google public DNS verbose-run host -W 4 pool.ntp.org 8.8.8.8 else for dns in $dnss; do verbose-message Resolving hostname at $dns verbose-run host -W 4 pool.ntp.org $dns done fi verbose-file /root/.ssh/authorized_keys verbose-file-uncommented-patterns /etc/ssh/sshd_config 'Pass|Auth|PAM|Root' verbose-message "END FORENSICS -- $message" } function hang-and-shutdown() { message=$1; shift verbose-message "message - shutting down in 2h" # todo: maybe we can put a staticly linked sshd here /bin/sleep 2h /sbin/shutdown -h now }