3 function verbose-message () {
5 echo $(date "+%H:%M:%S") " ==================== " "$@"
8 function verbose-run () {
9 echo $(date "+%H:%M:%S") " ========== running" "$@"
11 echo $(date "+%H:%M:%S") " ==========" "$@" "returned with retcod=$?"
14 function verbose-file() {
17 if ! [ -f "$file" ]; then
18 verbose-message "!!!!!!!!!! missing $file"
24 function verbose-file-uncommented-patterns () {
26 egrep_pattern=$2; shift
28 if ! [ -f "$file" ]; then
29 verbose-message "!!!!!!!!!! missing $file"
31 echo '---------- egrep $egrep_pattern' $file
32 grep -v '^#' $file | egrep "$egrep_pattern"
36 function verbose-forensics () {
38 verbose-message "BEG FORENSICS -- $message"
43 # XXX : need to check for a running udev
45 for file in /etc/resolv.conf /run/resolvconf/resolv.conf /etc/sysconfig/network-scripts/ifcfg-eth*; do
48 verbose-message Configured interfaces
49 verbose-run ls -l /sys/class/net/
50 verbose-run cat /proc/net/dev
51 verbose-run ip address show
52 verbose-run ip link show
53 verbose-message Routing table
54 verbose-run ip route show
55 BOOT_FILE=/usr/boot/boot_server
56 BOOT_SERVER=$(cat $BOOT_FILE)
57 verbose-message Pinging boot server $BOOT_SERVER "(" from file $BOOT_FILE ")"
58 verbose-run ping -c 4 -w 4 $BOOT_SERVER
59 verbose-message Pinging google public DNS
60 verbose-run ping -c 1 -w 5 8.8.8.8
61 # try to resolve this hostname as that's the one used for ntp
62 dnss=$(grep '^nameserver' /etc/resolv.conf 2>/dev/null | awk '{print $2;}')
63 if [ -z "$dnss" ] ; then
64 # not too helpful, but..
65 verbose-message "!!!" No server found in /etc/resolv.conf - Resolving hostname at the google public DNS
66 verbose-run host -W 4 pool.ntp.org 8.8.8.8
69 verbose-message Resolving hostname at $dns
70 verbose-run host -W 4 pool.ntp.org $dns
73 verbose-file /root/.ssh/authorized_keys
74 verbose-file-uncommented-patterns /etc/ssh/sshd_config 'Pass|Auth|PAM|Root'
75 verbose-message "END FORENSICS -- $message"
78 function hang-and-shutdown() {
80 verbose-message "message - shutting down in 2h"
81 # todo: maybe we can put a staticly linked sshd here